Groovy переопределить "или" для целого числа "или" с другим целым числом - PullRequest
1 голос
/ 05 марта 2012

В Groovy все есть Object, четные числа

assert 1.getClass() == Integer

В Groovy вы можете переопределить существующий метод в существующем классе во время выполнения

Integer.metaClass.or = { right -> println "$delegate or $right" }

Теперь мы можем позвонить или позвонить оператору на любой номер, используя канал (|)

1.or("hello") // prints: 1 or hello
1 | "hello" // prints: 1 or hello

Пока все хорошо. Теперь давайте попробуем или целое число с целым числом

2.or(3) // nothing happens
2 | 3 // nothing happens

Это приводит нас к моим вопросам :

  • Почему ничего не происходит?
  • Это ошибка оптимизации?
  • Как заставить это работать для любого типа?

1 Ответ

1 голос
/ 05 марта 2012

Вероятно, он выбирает уже существующий or метод, который принимает целое число, а не более общую версию объекта.

Работает ли он, если вы делаете:компьютер в настоящее время, поэтому не может проверить это: - /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...