- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mvel2.0语法指南虽然mvel吸收了大量的Java语法,但作为一个表达式语言,还是有着很多重要的不同之处,以达到更高的效率,比如:mvel像正则表达式一样,有直接支持集合、数组和字符串匹配的操作符。?除了表达式语言外,mvel还提供了用来配置和构造字符串的模板语言。mvel2.x表达式包含以下部分的内容:属性表达式,布尔表达式,方法调用,变量赋值,函数定义。一、基本语法MVEL 是一种基于java语法,但又有着显著不同的表达式语言。与java不同,MVEL是动态类型(带有可选分类),也就是说在源文件中是没有类型限制的。一条MVRL表达式,简单的可以是单个标识符,复杂的则可能是一个充满了方法调用和内部集合创建的庞大的布尔表达式。1、简单的属性表单式:在这个表达式中,我们只是有一个标识符(),这就是我们所说的MVEL的AA级属性表达式,该表达式的唯一目的是获取一个变量或上下文对象的属性。属性表达式是MVEL的最常见的用途之一,通过它,MVEL可以用来作为一个高性能,易使用的反射优化器。2、布尔表达式:MVEl也可以用来表示一个布尔表达式,如: == John Doe.像java一样,MVEL支持所有优先级规则,包括通过括号来控制执行顺序,如:( == John Doe) ((x * 2) - 1) 203、复合语句表达式:在一段脚本里,你可以写任意多个语句,但注意要用分号来作为每个语句的结束符,只有一个语句时或最后一个语句时除外。例如:statement1; statement2; statement3 注意最后一个语句没有分号。另外,换行不能替代分号来作为一个语句的结束标识。4、返回值:比如,MVEL使用了输出最后值原则,也就是说,尽管MVEL定义了return关键字,但却没有必要用它。例如;a = 10;b = (a = a * 2) + 10;a;这段脚本将最后一个表达式的值a作为自己的值返回,功能上它与下面这段脚本等价:a = 10;b = (a = a * 2) + 10;return?a;二、操作符下面列出了MVEL中所有的操作符:一元操作符:new,用来实例化对象,例:new String(foo)with,对单个对象执行多个操作,例:with (value) { name = Foo, age = 18, sex = Sex.FEMALE }assert,用一个AssertionError 断言一个值的对错,例:assert foo != nullisdef,用来判断一个变量在某个范围内是否定义,例:isdef variableName!,布尔取反操作符,例:!true == false比较运算符;常见的比较运算符==,!= ,,,=,=等不再赘述contains,判断左边的值是否包含右边的值,如:var contains Foois/instance of ,判断左边的值是否是右边的类的实例,如:varinstanceof Integerstrsim,比较两个字符串的相似度,返回一个百分数,如; foobie strsim foobar?soundslike,比较两个字符串的发音,如:foobar soundslike fubar?逻辑运算符:,||略or,用于多个值间进行逻辑或运算,如:foo or bar or barfoo or N/A?~=,正则表达式匹配符,如:foo ~= [a-z].+?按位运算符:,|,^等数学运算符:+,-,*,/等其它运算符:+,字符串连接运算,如:foo +bar#,字符连接运算,如:1 # 2返回12in,投影整个项目集合,如:(foo in list)=,赋值运算符,如:var = foobar三、值判断在MVEL中所有的判断是否相等?都是对值的判断,而没有对引用的判断,因此表达式foo == bar 等价于java中的foo.equals(bar).1、判断值是否为emptiness(需要解释emptiness)MVEL提供了一个特殊的字符来表示值为emptiness的情况,叫作empty,如:foo == empty,若foo满足emptiness的任何条件,这个表达式值都为true?2、为null测试MVEL中,null和nil都可以用来表示一个空值,如:foo == null ; foo == nil;?3、强制转换当两个不同类型且没有可比性的值进行比较时,需要将左边的值强制转换成右边的值的类型时,MVEL会应用类型强制转换系统,反之亦然。如:123?== 123;这个表达式的值为true,因为为了执行比较,强制类型转换系统会隐式的将数字123转换成字符串。四、列表、map和数组在MVEL中你可以使用非常简单的语法来描述列表、map、数组,且看下面的例子:
文档评论(0)