这些有什么区别?
为什么用一个而不是另一个?
def variable = 5
if( variable ==~ 6 && variable != 6 ) {
return '==~ and != are not the same.'
} else {
return '==~ and != are the same.'
}
在groovy中,==~
运算符(也称为“匹配”运算符)用于正则表达式匹配。 !=
只是一个普通的老常规“不等于”。所以这些是非常不同的。
在Java中,!=
“不等于”而~
是“按位NOT”。你实际上会做variable == ~6
。
在Groovy中,==~
运算符是“正则表达式匹配”。例子是:
"1234" ==~ /\d+/
- >评估为true
"nonumbers" ==~ /\d+/
- >评估为false
在Groovy中,您还必须注意除了==~
,别名“Match operator”之外,还有=~
,别名“Find Operator”和~
,别名“Pattern operator”。
所有都解释here。
==~
结果类型:Boolean
/ boolean
(Groovy中没有原语,一切都不是它看起来!)
=~
结果类型:java.util.regex.Matcher
~
结果类型:java.util.regex.Pattern
我认为Groovy解释器/编译器可以区分用作Pattern运算符的~
和用作按位NOT的~
(即它在Java中的用法)通过上下文:前者将始终跟随一个模式,该模式将始终以分隔符括起来,通常是/
。