MVEL 函数中的可选参数
有没有办法让 MVEL 2.0 ( http://mvel.codehaus.org/ ) 一起使用带有可选参数的函数?
我希望能够评估这一点:
trunc('blahblah',2)
但也
trunc('blahblah',2,'[...]');
现在我尝试过:
def trunc(param1,param2,param3) { ... impl ... }
如果我尝试仅使用 3 个参数调用它,则会出现异常。 我也尝试过:
def trunc(param1,param2,param3) { ... impl ... } def trunc(param1,param2) { ... impl ... }
但第二个似乎完全覆盖了第一个定义。
谢谢
Is there a way to get MVEL 2.0 ( http://mvel.codehaus.org/ ) to work with functions with optional parameters?
I would like to be able to eval this:
trunc('blahblah',2)
but also
trunc('blahblah',2,'[...]');
Now i have tried:
def trunc(param1,param2,param3) { ... impl ... }
That gives an exception if i try to call it with only 3 parameters.
I also tried:
def trunc(param1,param2,param3) { ... impl ... }
def trunc(param1,param2) { ... impl ... }
But the second one seems to completely overwrite the first definition.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 java 中,您可以声明多个具有相同名称但参数不同的方法。
这样您就可以(以有限的方式)支持可选参数。
例如:
调用 method() 可以使用一个或两个参数:)
In java you can declare multiple methods with the same name, but a different arguments.
That way you can support (in a limited way) optional parameters.
Eg.:
Calling method() is possible with one or two arguments :)
MVEL 有一个错误,它接受带有可变参数的方法,但只执行带有非可变参数的方法。 所以你应该同时拥有可变参数和非可变参数方法。 对可变参数方法进行查找,但只有非可变参数才会被调用。
在您的实现类中:
如果您想对任意对象类型执行此操作,请使用 Object[].class。 请记住,这样做会失去类型安全性。
MVEL has a bug where it accepts methods with varargs, but only executes the method with non-varargs. So you should have both a varargs and non-varargs method. Do a lookup on the varargs method, but only the non-varargs will get called.
In your implementation class:
If you want to do this with arbitrary object types, use Object[].class. Keep in mind that you lose type safety by doing this.