Что значит создать черту? - PullRequest
10 голосов
/ 27 мая 2011

Я новичок в Scala, и в книге о программировании Scala от О'Рейли авторы показывают некоторый код, который создает черту.Учитывая, что черты в некоторой степени аналогичны интерфейсам в Java (хотя я знаю, что черты реализованы в виде байтового кода как классы), что означает создание экземпляра черты и каков будет подходящий вариант использования / шаблон проектирования для этого?*

Например:

scala> val x = new T1 with T2 { type z = String val v: z = "Z" } 
x: java.lang.Object with T1 with T2{type z = String; def zv: this.z} = $anon$1@9d9347d

1 Ответ

17 голосов
/ 27 мая 2011

Я также довольно новичок в Scala, но я думаю, что в приведенном выше примере вы создаете новый анонимный объект (как вы можете сделать с Java), а затем присоединяете Trait к новому анонимному типу.

Поскольку черты Scala могут содержать код реализации, вы в основном получаете поведение черты бесплатно, предполагая, что анонимный класс удовлетворяет любым требованиям черты (например, задает значения или определяет «абстрактные» методы).

Итак, вы делаете не создание экземпляра Черты напрямую, а создание подходящего объекта, к которому Черта может присоединиться, чтобы вы могли использовать функциональность Черты без необходимости определять класс, расширяющий Черту.

Это отвечает на ваш вопрос?

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