Какая польза от использования ключевого слова / метода в groovy? - PullRequest
22 голосов
/ 22 марта 2011

Я прочитал use ключевое слово в Groovy. Но не мог выйти с тем, для чего именно он был использован. И я также пришел с категория классы, по этой теме, что это тоже? И от, Groovy In Action

class StringCalculationCategory {
  static def plus(String self, String operand) {
    try {
      return self.toInteger() + operand.toInteger()
    } catch (NumberFormatException fallback) {
      return (self << operand).toString()
    }
  }
}

use (StringCalculationCategory) {
  assert 1 == '1' + '0'
  assert 2 == '1' + '1'
  assert 'x1' == 'x' + '1'
}

С помощью приведенного выше кода, кто-нибудь может сказать, для чего используется ключевое слово use в groovy? А также, что делает приведенный выше код?

Ответы [ 2 ]

21 голосов
/ 22 марта 2011

См. Шаблон Pimp My Library , чтобы узнать, что делает use.

В вашем случае это перегружает оператор String.add(something). Если обе строки можно использовать как целые числа (toInteger() не выдает исключение), он возвращает сумму этих двух чисел, в противном случае он возвращает объединение строк.

13 голосов
/ 19 января 2014

use полезно, если у вас есть класс, для которого у вас нет исходного кода (например, в библиотеке), и вы хотите добавить новые методы в этот класс.

ByКстати, этот пост в блоге Дастина Маркса Вдохновленный фактическими событиями утверждает:

Использование «ключевого слова» на самом деле НЕ является ключевым словом, но являетсяметод расширения Groovy GDK класса Object и предоставляется через Object.use (Category, Closure).Существует множество других методов, предоставляемых в Groovy GDK Object, которые обеспечивают удобный доступ к функциональности и могут выглядеть как ключевые слова или функции языка, так как им не требуется имя объекта для их продолжения.Я склонен не использовать переменные в моих скриптах Groovy с этими именами (такими как is, println и sleep), чтобы избежать потенциальных проблем с читабельностью.

Существуют и другие подобные «ключевые слова», которые на самом деле являются методамиКласс объекта, например с .В документации Groovy JDK есть список таких методов.

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