代码之家  ›  专栏  ›  技术社区  ›  ataylor

groovy in操作符是如何工作的?

  •  13
  • ataylor  · 技术社区  · 16 年前

    groovy“in”操作符在不同的情况下似乎意味着不同的东西。有时 x in y 方法 y.contains(x) 有时它似乎在召唤 y.isCase(x) .

    groovy如何知道该调用哪一个?groovy是否知道使用.contains方法的特定类或类集?或者行为是由某个对象上的方法的存在触发的?有没有把in运算符完全改成其他运算符的情况?

    2 回复  |  直到 9 年前
        1
  •  15
  •   Rotem    9 年前

    我做了一些实验,看起来 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集合类,我想它只是 在里面 操作员基于 contains() 因为 isCase() 电话 容器() 对于那些课程。

        2
  •  3
  •   Eel Lee Akarsh    11 年前

    其实都是基于ISCase。groovy添加了 isCase method to Collections 这是基于contains方法的。任何带有iscase的类都可以与in一起使用。