Я думаю, что когда вы определяете String
, вы определяете объект. Поэтому вам нужно использовать .equals()
. Когда вы используете примитивные типы данных, вы используете ==
, но с String
(и любым объектом) вы должны использовать .equals()
.
- спросил я в списке рассылки Groovy. Вот ветка. Ответ: isCase
class A
{
def isCase(o) {
return false;
}
}
a = new A()
println 6 in a // returns false
Вы можете сделать Все, что
реализует Коллекцию или подинтерфейс Коллекции. Groovy имеет реализацию iterator ()
для Object
, и похоже, что для операторов, которые работают с агрегированными объектами, Groovy попытается преобразовать объект в коллекцию, а затем выполнит агрегатная функция.
В качестве альтернативы, вы можете иметь любую
реализацию Iterable . Я все еще пытаюсь найти ссылку на это и написать доказательство концепции, чтобы проверить это.
Документация Groovy для шаблона Iterator может указать, что это будет работать.
Интересно, возможно ли это, оператор членства ( in) отсутствует в списке на странице Перегрузка оператора .