próbuję wykonać następujący kod:Strukturalne pisanie w Scali nie działa z Double?
def sum(e: { def *(x: Double): Double}) = e * 2.0
Problem jest, to nie działa ze wszystkimi klasami numerycznych:
sum(20.0)
<console>:9: error: type mismatch;
found : Double(10.0)
required: AnyRef{def *(x: Double): Double}
algo(10.0)
sum(10)
<console>:9: error: type mismatch;
found : Int(10)
required: AnyRef{def *(x: Double): Double}
algo(10)
Czy jest coś złego w moim kodu?
Wydaje się, że problemem jest to, że Double to typ wartości (podtyp AnyVal). A typowanie strukturalne scala wymaga instancji typu referencyjnego (AnyRef) – zvez