groovy - Groovy in operator 是如何工作的?

标签 groovy operators in-operator

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/

相关文章:

php - 了解 php 中的运算符优先级

haskell - 在 Haskell 函数定义的参数符号之间使用冒号有什么作用?

mysql - 将两个 MySQL 查询合并为一个

java - vbscript 中 Chr(34) 的 Groovy 等价物

java - 如何通过gradle下载schema-registry maven插件

java - 在使用 SwingBuilder 构建的 UI 中显示来自 Java 线程的变量

jquery - 使用 javascript 组合两个变量以将新变量设置为已声明的变量

c# - Entity Framework 中的 'in' 谓词

maven - 使用位于 src/test/java 中的 Maven 运行 Spock 测试