Как перегрузить оператор in в Groovy?

Я думаю, что когда вы определяете String, вы определяете объект. Поэтому вам нужно использовать .equals(). Когда вы используете примитивные типы данных, вы используете ==, но с String (и любым объектом) вы должны использовать .equals().

7
задан Geo 17 October 2009 в 15:44
поделиться

3 ответа

- спросил я в списке рассылки Groovy. Вот ветка. Ответ: isCase

class A
{
  def isCase(o) {
    return false;
  }
}

a = new A()
println 6 in a // returns false
8
ответ дан 6 December 2019 в 23:10
поделиться

Вы можете сделать Все, что реализует Коллекцию или подинтерфейс Коллекции. Groovy имеет реализацию iterator () для Object , и похоже, что для операторов, которые работают с агрегированными объектами, Groovy попытается преобразовать объект в коллекцию, а затем выполнит агрегатная функция.

В качестве альтернативы, вы можете иметь любую реализацию Iterable . Я все еще пытаюсь найти ссылку на это и написать доказательство концепции, чтобы проверить это.

Документация Groovy для шаблона Iterator может указать, что это будет работать.

2
ответ дан 6 December 2019 в 23:10
поделиться

Интересно, возможно ли это, оператор членства ( in) отсутствует в списке на странице Перегрузка оператора .

1
ответ дан 6 December 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: