Tôi đang cố gắng để viết một interpolate
phương pháp chung mà hoạt động trên bất kỳ loại có hai phương pháp, một *
và +
, như thế này:Scala - làm thế nào để xác định một loại cấu trúc đề cập đến chính nó?
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
}
này không hoạt động mặc dù (trên Scala 2.8.0 .RC7), tôi nhận được thông báo lỗi sau:
<console>:8: error: recursive method + needs result type
def +(v: V): V
^
<console>:7: error: recursive method * needs result type
def *(t: Double): V
^
Làm cách nào để chỉ định loại cấu trúc chính xác? (Hoặc có cách nào tốt hơn để thực hiện việc này không?)
http://www.scala-notes.org/2010/06/avoid-structural-types-when-pimping-libraries/ có thể giúp ở đây – VonC
@VonC cảm ơn ... đó là blog của riêng tôi! ;-) – Jesper
"© 2010 Jesper de Jong" ... riiiight. Vâng, xin lỗi về điều đó;) – VonC