*Groovy中带字符串的in*关键字

*Groovy中带字符串的in*关键字,groovy,Groovy,现在,关键字中的不应该像列表中的那样,为字符串模拟吗?这是一只虫子还是它应该是什么样子?我正在使用Groovy 2.3.7。关键字中的用于集合类型;不在String类型上 为什么String与String比较有效? Groovyin运算符取决于isCase方法。相比之下,它将使用这一点。StringisCase方法使用equals执行此比较。显然hello不等于hello world,因此它返回false。然而,hello确实等于hello,因此true,但它不应该吗'hello'中的'hell

现在,关键字
中的
不应该像
列表中的
那样,为
字符串
模拟
吗?这是一只虫子还是它应该是什么样子?我正在使用Groovy 2.3.7。

关键字中的
用于
集合
类型;不在
String
类型上

为什么
String
String
比较有效?


Groovy
in
运算符取决于
isCase
方法。相比之下,它将使用这一点。
String
isCase
方法使用
equals
执行此比较。显然
hello
不等于
hello world
,因此它返回
false
。然而,
hello
确实等于
hello
,因此
true

,但它不应该吗<代码>'hello'
中的'hello'给出了
true
。因此我的猜测是,它取决于实现
集合的所有类的
包含
。那么,为什么要依赖
isCase
获取
String
?当我们在
关键字中使用
时,is的意思应该是右边的对象是否存在于左边的对象中,不是吗?它不依赖于所有实现
集合的类的
包含
。它取决于
isCase
,而isCase恰好使用
contains
进行比较。这正是他们选择的方式。我同意,它可能不是最明显的实现。我同意它不是,因此这个问题。谢谢你的解释。但是你认为为它提交一个功能请求是一个好主意吗?也可以!从用户那里得到一些建设性的批评没有什么错。这并不能直接解决你的情况,但仅供参考<在~/hello.*/
中的“hello world”应计算为
true
@JeffScottBrown,但在~/hello.+/
中的“hello”不是。@smac89同意。
groovy:000> 'hello' in 'hello world'
===> false
groovy:000> 'hello world'.contains('hello')
===> true
groovy:000> 'hello' in ['hello', 'world']
===> true
groovy:000> ['hello', 'world'].contains('hello')
===> true