Groovy "in"运算符在不同情况下似乎意味着不同的东西。有时 x in y
意味着 y.contains(x)
有时它似乎打电话y.isCase(x)
.
Groovy 如何知道要调用哪一个? Groovy 是否知道使用 .contains 方法的特定类或类集?或者行为是由对象之一上的方法的存在触发的?是否存在将 in 运算符完全更改为其他内容的情况?
最佳答案
我做了一些实验,它看起来像 in
运算符基于 isCase
方法仅如以下代码所示
class MyList extends ArrayList {
boolean isCase(Object val) {
return val == 66
}
}
def myList = new MyList()
myList << 55
55 in myList // Returns false but myList.contains(55) returns true
66 in myList // Returns true but myList.contains(66) returns false
对于 JDK 集合类,我想它看起来就像
in
运算符基于 contains()
因为 isCase()
电话contains()
对于那些类(class)。
关于groovy - Groovy in operator 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2068298/