Вопросы по теме '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