这些之间有什么区别?
为什么要使用其中一个而不是另一个?
def variable = 5
if( variable ==~ 6 && variable != 6 ) {
return '==~ and != are not the same.'
} else {
return '==~ and != are the same.'
}
这些之间有什么区别?
为什么要使用其中一个而不是另一个?
def variable = 5
if( variable ==~ 6 && variable != 6 ) {
return '==~ and != are not the same.'
} else {
return '==~ and != are the same.'
}
==~
运算符(也称为“匹配”运算符)用于正则表达式匹配。而!=
只是一个普通的“不等于”。所以它们是非常不同的。==~
作为匹配运算符是否适用于variable ==~ 6
? - Sotirios Delimanolisdef var = 3;
进行简短测试后,结果为:var ==~ 4;
是 false
,而 var ==~ 3;
是 true
,因此可能存在某种特殊处理方式。虽然我不是 Groovy 专家。 - Marvin/foo/
实际上与"foo"
相同。我认为Groovy只是将6
视为"6"
(因为变量是未经类型定义的def
)。 - Marvin!=
表示“不等于”,~
表示按位非运算。因此,variable == ~6
实际上是在比较变量是否等于按位非6。==~
操作符表示“正则表达式匹配”。例如:
"1234" ==~ /\d+/
-> 结果为true
"nonumbers" ==~ /\d+/
-> 结果为false
==~
外,还有别名为“查找运算符”的=~
和别名为“模式运算符”的~
。所有这些都在此处有详细解释。
==~
的结果类型为:Boolean
/boolean
(在Groovy中没有原始类型,一切并非表面所见!)。
=~
的结果类型为:java.util.regex.Matcher
。
~
的结果类型为:java.util.regex.Pattern
。~
和作为按位非的~
(即在Java中的用法):前者将始终后跟模式,并且模式将始终用定界符括起来,通常是/
。
'пјҢиҖҢжҳҜ'=='е’Ң''гҖӮиҮіе°‘еңЁJavaдёӯжҳҜиҝҷж ·зҡ„гҖӮдҪ иҜҙзҡ„жҳҜJavaиҝҳжҳҜGroovyпјҹ - user253751