Sto cercando di scrivere un interpolate
metodo generico che funziona su qualsiasi tipo che ha due metodi, un *
e +
, come questo:Scala: come definire un tipo strutturale che si riferisce a se stesso?
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
}
Questo non funziona se (sulla Scala 2.8.0 .RC7), ricevo i seguenti messaggi di errore:
<console>:8: error: recursive method + needs result type
def +(v: V): V
^
<console>:7: error: recursive method * needs result type
def *(t: Double): V
^
Come si specifica il tipo di struttura in modo corretto? (O c'è un modo migliore per farlo?)
http://www.scala-notes.org/2010/06/avoid-structural-types-when-pimping-libraries/ potrebbe aiutare qui – VonC
@VonC grazie ... questo è il mio blog! ;-) – Jesper
"© 2010 Jesper de Jong" ... riiiight. Bene, mi dispiace per quello;) – VonC