El operador Groovy "in" parece significar cosas diferentes en casos diferentes. A veces, x in y
significa y.contains(x)
y, a veces, parece llamar al y.isCase(x)
.¿Cómo funciona el operador Groovy in?
¿Cómo sabe Groovy a cuál llamar? ¿Existe alguna clase o conjunto de clases que Groovy conozca que usen el método .contains? ¿O es el comportamiento desencadenado por la existencia de un método en uno de los objetos? ¿Hay algún caso en el que el operador en se cambie por algo completamente distinto?
Ok, eso tiene sentido. Estaba confundido acerca de la relación entre "en" e isCase. Puedo ver que ahora contiene sentido cuando se utiliza un contenedor como una etiqueta de caso. Sin embargo, reutilizar isCase para el operador in es algo sorprendente, ya que permite expresiones inesperadas como 'asdf' en String == true. – ataylor
Esto es correcto, pero muy pobre por parte de groovy. Mientras que el comportamiento de las declaraciones de casos y que contienen un elemento utilizan la misma lógica con las colecciones, son muy diferentes en otras situaciones. Por ejemplo, la siguiente afirmación no pasa: afirme 'b' en 'bollos'. Esto es contrario a la intuición, por decir lo menos. –
¿alguien puede decirme en pocas palabras lo que significa "Causa"? –