Pytanie Jaki jest pożytek ze słowa kluczowego "use" w groovy?


czytam use słowo kluczowe w Groovy. Ale nie mógł wyjść, ponieważ został dokładnie wykorzystany. I również pochodzę z Kategoria klasy, w ramach tego tematu, co to jest? I od Groovy w akcji

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'
}

Z powyższym kodem, czy ktoś może powiedzieć, co jest w użyciu use słowo kluczowe w groovy? A także co robi powyższy kod?


21
2018-03-22 16:11


pochodzenie


Cześć, czy było warto, żebyś się nauczył? Przechodzę tę samą książkę i człowiek, to trochę trudne - niccolo m.
@imon: jest to doskonała książka, którą możesz znaleźć! - Ant's


Odpowiedzi:


Zobacz Pimp My Library Pattern Po co use robi.

W twoim przypadku to przeciąża String.add(something) operator. Jeśli oba ciągi znaków mogą być używane jako liczby całkowite (toInteger() nie rzuca wyjątku), zwraca sumę tych dwóch liczb, w przeciwnym razie zwraca konkatenację łańcuchów.


17
2018-03-22 17:04





posługiwać się jest przydatna, jeśli masz klasę, do której nie masz kodu źródłowego (np. w bibliotece) i chcesz dodać nowe metody do tej klasy.

Tak poza tym, ten post na blogu Dustina Marxa Zainspirowany rzeczywistymi zdarzeniami stwierdza:

Słowo kluczowe "use" w rzeczywistości NIE jest słowem kluczowym, ale jest metodą włączoną   Rozszerzenie GDK Groovy'a klasy Object i dostarczane przez   Object.use (kategoria, zamknięcie). Istnieje wiele innych metod   udostępnione na obiekcie Groovy GDK, który zapewnia wygodny dostęp do   funkcjonalność i mogą wyglądać jak słowa lub funkcje językowe   ponieważ nie potrzebują nazwy obiektu, aby kontynuować. Nie mam tendencji   używać zmiennych w moich skryptach Groovy o tych nazwach (np.   println i sleep), aby uniknąć potencjalnych problemów z czytelnością.

Istnieją inne podobne "słowa kluczowe", które są w rzeczywistości metodami klasy Object, takimi jak z. The Dokumentacja JDK Groovy ma listę takich metod.


11
2018-01-18 23:52