Właśnie znalazłem to in the API i chciałbym zobaczyć jeden lub dwa przykłady wraz z wyjaśnieniem, na co to jest dobre.Jak korzystać z cechy scala.Proxy
Odpowiedz
Cecha Proxy zapewnia użyteczną podstawę do tworzenia delegatów, ale należy pamiętać, że tylko dostarcza implementacje metod w Any
(equals
,) Będziesz musiał samodzielnie wdrożyć dodatkowe metody przekazywania. Proxy jest często używany z pimp-my-library pattern:
class RichFoo(val self: Foo) extends Proxy {
def newMethod = "do something cool"
}
object RichFoo {
def apply(foo: Foo) = new RichFoo(foo)
implicit def foo2richFoo(foo: Foo): RichFoo = RichFoo(foo)
implicit def richFoo2foo(richFoo: RichFoo): Foo = richFoo.self
}
Standardowa biblioteka zawiera również zestaw cech, które są przydatne do tworzenia proxy Collection (SeqProxy
, SetProxy
, MapProxy
, etc).
Wreszcie istnieje wtyczka kompilatora w scala-inkubatorze (AutoProxy plugin), który automatycznie zastosuje metody przekierowania. Zobacz także this question.
Wygląda na to, że użyłbyś go, gdy potrzebujesz funkcji podobnej do Haskell-a newtype
.
Na przykład, następujący kod Haskell:
newtype Natural = MakeNatural Integer
deriving (Eq, Show)
może w przybliżeniu odpowiadać następujący kod Scala:
case class Natural(value: Int) extends Proxy {
def self = value
}
Więc to w zasadzie maszyny do tworzenia delegatów? –
@JensSchauder, tak. – missingfaktor
- 1. Jak zainicjować wartość z cechy podtypu?
- 2. Jak wywołać metodę cechy z aliasem
- 3. Lifetime problem z Send cechy
- 4. Dlaczego cechy są natychmiastowe?
- 5. wykonawczymi zagnieżdżone Cechy
- 6. rodzajowych Scala z <: i różne cechy
- 7. Mixiny kontra cechy
- 8. Sprzeczne implementacje cechy Rust
- 9. Scala wieżowych cechy
- 10. Jak korzystać z Peekable Rusta?
- 11. Niezmienne klasy i cechy?
- 12. Inicjowanie opóźnionej cechy
- 13. Cechy i serializacja/deserializacja
- 14. C++: has_trivial_X - cechy typu
- 15. Cechy kotła i modernizacja
- 16. Jak korzystać z Sentry z Ardent w Laravel?
- 17. Jak korzystać z find_module?
- 18. Jak korzystać z RedirectToRoute?
- 19. Jak korzystać z WSDL
- 20. Jak korzystać z kCTSuperscriptAttributeName?
- 21. Jak korzystać z pgdb.executemany?
- 22. Jak korzystać z org.mockito.AdditionalMatchers.gt?
- 23. Jak korzystać z createTransport?
- 24. Jak korzystać z UIRemoteNotificationTypeVoIP?
- 25. Jak korzystać z onResume()?
- 26. Jak korzystać z phantomjs?
- 27. Jak korzystać z Form.ShowDialog?
- 28. jak korzystać z particles.js?
- 29. Jak korzystać z MonadRandom?
- 30. Jak korzystać z ReadWriteLock?
Aktualnie aktywna wersja tej wtyczki to autoproxy-lite: https://github.com/kevinwright/Autoproxy-Lite –