"35.172.217.40 - 35.172.217.40"

Вопросы с тегом 'self-type'

Автотип - это общий тип, ссылающийся на текущий класс
11

В чем разница между подклассами типа self-types и trait?

Автотип для признака A: trait B trait A { this: B => } говорит, что "A не может быть смешано с конкретным классом, который также не распространяется на B". С другой стороны, следующее: trait B trait A extends B говорит, что "любое (конкре...
02 янв. '09 в 8:07
2

Как использовать Scala эту типизацию, абстрактные типы и т.д. Для реализации типа Self?

Я не мог найти ответ на этот вопрос в любом другом вопросе. Предположим, что у меня есть абстрактный суперкласс Abstract0 с двумя подклассами Concrete1 и Concrete1. Я хочу иметь возможность определять в Abstract0 что-то вроде def setOption(...): Sel...
30 нояб. '10 в 11:18
5

Разница между наследованием признаков и аннотацией типа

В Scala я видел конструкции trait T extends S и trait T { this: S => используется для достижения аналогичных вещей (а именно, что абстрактные методы в S должны быть определены до создания экземпляра). Какая разница между ними? Почему вы исп...
08 февр. '10 в 21:17
4

Scala: метод реализации с возвращаемым типом конкретного экземпляра

Мне нужен способ принудительного применения метода в абстрактном классе, чтобы иметь возвращаемый тип конкретного класса объекта, на который он вызван. Наиболее распространенным примером является метод copy(), и в настоящее время я использую подход,...
06 февр. '13 в 13:14
2

Явные саморекламы без типа/разности с ''this''

Я понимаю использование явно введенных саморекламы: trait T { self : T2 => ... } В теле self является псевдонимом для this, но имеет более точный тип T with T2. Теперь я видел это в коде: trait T { self => ... } То есть явная са...
09 нояб. '11 в 23:39
1

Больше Scala idiomatic: trait TraitA расширяет TraitB или признак TraitA {self: TraitB =>}

Помимо аспекта наследования, существует ли разница между следующими шаблонами классов: 1| trait TraitA extends TraitB 2| trait TraitA { self: TraitB => } Я хотел бы разделить обязанности между TraitA и TraitB, но первая не может функционирова...
30 авг. '11 в 22:07
1

Scala: незаконное наследование; сам тип Y не соответствует X selftype SELF

У меня есть черта, которая принимает параметр типа, и я хочу сказать, что объекты, реализующие этот признак, также будут соответствовать этому параметру типа (используя generics для совместимости с Java) Следующий код: trait HandleOwner[SELF <: ...
11 сент. '11 в 14:34
3

В чем причина `=>` в типе self?

Тип типа выглядит следующим образом: trait A { self: String => } Это говорит о том, что признак A (или его подтип) должен наследовать класс String. Ключевое слово self сопровождается : аналогом переменной в var s: String, где тип появляется ...
30 июн. '12 в 20:48
1

как отличить состав и самонастраивающиеся прецеденты

Scala имеет два инструмента для выражения композиции объекта: оригинальную концепцию самонаведения и известную тривиальную композицию. Я любопытно, в каких ситуациях я должен использовать это. Существуют очевидные различия в их применимости. Самост...
16 июн. '12 в 1:39
1

Наследование собственного типа в scala

Скажем, у меня есть следующие черты: trait A trait B { this: A => } trait C extends B // { this: A => } Ошибка компилятора: illegal inheritance; self-type C does not conform to B selftype B with A Как и ожидалось, если я раскомментирую а...
06 авг. '10 в 7:16
2

Scala self type и this.type в выпуске коллекций

Я пытаюсь обернуть голову абстрактными и явными типами я в scala. Рассмотрим этот пример: Я хочу создать базу для расширяемого дерева так же просто, как это: trait Tree { def children: Iterable[Tree] def descendants: Iterable[Tree] = { val dv = ...
08 февр. '12 в 17:39
2

Определить признак, который должен быть расширен по классу case в scala

У меня есть классы case, у которых есть метод tupled, определенный в его сопутствующем объекте. Как видно из приведенного ниже кода в сопутствующих объектах, это просто дублирование кода. case class Book(id: Int, isbn: String, name: String) object...
19 янв. '16 в 15:29
2

Доступ к значениям из зависимого от пути типа mixin

Можно ли получить доступ к значениям во внешнем признаке из встроенного микса? то есть:. trait Outer { val foo trait Inner } trait InnerMixin { this: Outer#Inner => def bar { // how can I access 'foo' here? smth like Outer.this.foo }...
09 окт. '14 в 22:06
1

Имеет ли смысл класс со свойством другого класса?

scala> class A defined class A scala> class B {this: A => } defined class B scala> new B <console>:10: error: class B cannot be instantiated because it does not conform to its self-type B with A new B ^ ...
30 июн. '12 в 12:33
1

Напиши Скопируемый интерфейс более элегантный, чем в Java

Я пытаюсь написать интерфейс, который классы могут реализовать, чтобы сделать их "скопированными", (типа) безопасными Clonable. В Java я бы сделал что-то вроде этого, используя рекурсивные дженерики: public interface Copyable<C extends Copyable...
27 апр. '17 в 20:47