Я пытаюсь написать общий interpolate
метод, который работает на любом типе, который имеет два метода, *
и +
, как это:Scala - как определить структурный тип, который относится к самому себе?
trait Container {
type V = {
def *(t: Double): V
def +(v: V): V
}
def interpolate(t: Double, a: V, b: V): V = a * (1.0 - t) + b * t
}
Это не работает, хотя (по Scala 2.8.0 .RC7), появляется следующее сообщение об ошибках:
<console>:8: error: recursive method + needs result type
def +(v: V): V
^
<console>:7: error: recursive method * needs result type
def *(t: Double): V
^
Как правильно указать структурный тип? (Или есть лучший способ сделать это?)
http://www.scala-notes.org/2010/06/avoid-structural-types-when-pimping-libraries/ может помочь здесь – VonC
@VonC благодарит ... это мой собственный блог! ;-) – Jesper
«© 2010 Jesper de Jong» ... riiiight. Ну, извините за это;) – VonC