PFunc支持多个参数,不过他的写法不是?Person f:Next(name) ?x.}
这种格式,而是subject和object都支持list的格式。比如官方的concat函数?var apf:concat (arg arg ...)
。
通过添加一个括号,将object组成一组,传入一个 PropFuncArg objArg
.PropFuncArg类有两成员变量,分别是private List<Node> argList = null ;private Node arg = null ;
。
下面看一下concat的源代码
|
|
object可以通过getArgList的方式拿到所有的参数。
自己实现的时候直接重写public final QueryIterator execEvaluated(Binding binding, PropFuncArg argSubject, Node predicate, PropFuncArg argObject, ExecutionContext execCxt)
即可。
更进一步,参数的包装是在PropertyFunctionGenerator.compilePattern
中,有个findPropertyFunctionArgs
专门处理list。
本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证,欢迎转载,但转载请注明来自http://thousandhu.github.io,并保持转载后文章内容的完整。本人保留所有版权相关权利。
本文链接:http://thousandhu.github.io/2016/04/28/propertyFunction多参数用法/