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

scala self-type: значение не является ошибкой члена
Это продолжение этого вопроса . Я пытаюсь реализовать векторы в scala с помощью общего суперкласса, используя собственные типы: trait Vec[V] { self:V => def /(d:Double):Vec[V] def dot(v:V):Double def norm:Double = math.sqrt(this dot...
3968 просмотров
schedule 03.08.2023

Scala: незаконное наследование; самотип Y не соответствует самотипу X SELF
У меня есть черта, которая принимает параметр типа, и я хочу сказать, что объекты, реализующие эту черту, также будут соответствовать этому параметру типа (с использованием дженериков для совместимости с Java) Следующий код: trait...
8257 просмотров
schedule 07.08.2023

В чем причина `=›` в типе self?
Тип self выглядит следующим образом: trait A { self: String => } Это говорит о том, что признак A (или его подтип) должен наследовать класс String . За ключевым словом self следует : , аналогичный переменной в var s: String , где...
1507 просмотров
schedule 29.05.2022

Расширение Scala любопытно повторяющегося универсального шаблона
Задавая/редактируя этот вопрос , я заметил, что вы можете сделать это, чтобы с полной статической безопасностью достичь точки исходного «любопытно повторяющегося шаблона / общего шаблона»: trait MyTrait[This <: MyTrait[This]] { this: This...
175 просмотров
schedule 08.01.2023

Несоответствие типа MyType
Я позаимствовал прием MyType у Landei здесь . Но недавно я столкнулся с проблемой с типом self. Пример показывает, что я имею в виду: trait Excitable[SELF] { self: SELF => def withMoreAnger: SELF } trait Animal[SELF0] { self: SELF0...
230 просмотров
schedule 13.10.2022

класс case и наследование: как предложить другое поведение
ситуация: trait Operation { def something: Double } trait OperationPlus { this: A => override def something: Double = x + y } trait OperationMinus { this: A => override def something: Double = x - y } case class A(x: Double, y:...
455 просмотров
schedule 27.06.2023

Самостоятельный тип Scala с зависимой типизацией
Это не компилируется: trait FileSystem { type P <: Path[this.type] } trait Path[S <: FileSystem] { self: fileSystem.P => val fileSystem: S } Как ограничение собственного типа может зависеть от члена-значения в этом свойстве?
146 просмотров
schedule 20.10.2023

Самостоятельный и универсальный класс Scala
abstract class Bar[M] { def print(t: M): Unit = { println(s"Bar: ${t.getClass()}") } } trait Foo[M] { this: Bar[M] => def print2(t: M): Unit = { println(s"Foo: ${t.getClass()}") } } object ConcreteBar extends Bar[Int] with...
330 просмотров
schedule 26.09.2022