Я только что нашел его in the API и хотел бы увидеть один или два примера вместе с объяснением, для чего он хорош.Как использовать признак scala.Proxy
ответ
Черта Proxy обеспечивает полезную основу для создания делегатов, но учтите, что это только обеспечивает реализацию методов в Any
(equals
, hashCode
и toString
). Вам придется реализовать любые дополнительные методы переадресации самостоятельно. Прокси часто используется с 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
}
В стандартной библиотеке также содержит набор признаков, которые являются полезными для создания коллекции прокси-серверов (SeqProxy
, SetProxy
, MapProxy
и т.д.).
Наконец, в scala-инкубаторе есть плагин-компилятор (AutoProxy plugin), который автоматически реализует методы пересылки. См. Также this question.
Похоже, вы использовали бы его, когда вам нужна функция Haskell's newtype
.
Например, следующий код Haskell:
newtype Natural = MakeNatural Integer
deriving (Eq, Show)
может примерно соответствовать следующим Scala код:
case class Natural(value: Int) extends Proxy {
def self = value
}
Так это в основном механизмы для создания делегатов? –
@JensSchauder, да. – missingfaktor
- 1. Как использовать признак несколько раз в классе?
- 2. Как использовать частный признак из другого модуля?
- 3. Как сделать собственные адаптивные методы, способные использовать объект-признак?
- 4. Как сделать этот признак ковариантен
- 5. Как объявить один-метод признак
- 6. Итеративный как признак с Traversable
- 7. Собственный указатель на признак
- 8. Обобщенный признак в Java
- 9. OpenCV Dense признак функции
- 10. симметричное равенство при создании дезинфицированного строкового типа (с использованием scala.Proxy)
- 11. Как реализовать признак контроллера в AngularJS
- 12. Как установить общий признак как аргумент функции?
- 13. Признак устройства, получающий Nil
- 14. Принудительно формула проверить признак
- 15. Признак безопасности несвободных драйверов
- 16. Scala OO- необязательно удлинить признак
- 17. Не удается экспортировать и использовать признак Deserialize from serde
- 18. php trait, используя другой признак
- 19. PHP Как отключить признак в подклассе?
- 20. Рассмотрите признак как подкласс другого класса
- 21. Признак асимптоты SymPy и как обойти его
- 22. Как реализовать признак для параметризованных признака
- 23. Внедрение WithFilters в новый признак
- 24. указав признак ограничение в Скале
- 25. Признак атрибута углового 1,5 компонента
- 26. Типовой признак для тривиальных типов
- 27. признак с функциями, возвращающими итератор
- 28. spray-json: Сериализовать общий признак
- 29. Как заменить признак IdPK на пользовательский признак, который использует основной ключ String вместо Long Primary Key?
- 30. Внутренний признак прерывает неявный параметр
В настоящее время активная версия этого плагина является autoproxy-lite: https://github.com/kevinwright/Autoproxy-Lite –