В 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
Это приводит нас к моим вопросам :
- Почему ничего не происходит?
- Это ошибка оптимизации?
- Как заставить это работать для любого типа?