*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
比较有效?
Groovyin
运算符取决于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