bilibili / gengine

Other
1.95k stars 272 forks source link

isNil() 内置方法不支持多层级的map #36

Closed ychencode closed 2 years ago

ychencode commented 2 years ago

rule1 = rule "rule_1" "rule_1" begin return isNil(MyMap["123456789"]["123"]) end

myMap := make(map[string]map[string][]string)

if myMap["123456789"] == nil { myMap["123456789"] = make(map[string][]string) }

myMap["123456789"]["123"] = []string{"123"}

dtx := context.NewDataContext() dtx.Add("MyMap", myMap)

rb := builder.NewRuleBuilder(dtx) err := rb.BuildRuleFromString(rule1) if err != nil { panic(err) }

eg := engine.NewGengine() err = eg.Execute(rb, false) if err != nil { panic(err) }

执行返回: panic: [line 2:33 no viable alternative at input 'isNil(MyMap["123456789"][']