2016-04-01 10 views
1

Ich versuche, eine erstklassige Funktion mit Typ-Parameter wie unten zu erstellen und einen Fehler zu bekommen, Sure ist die Antwort einfach.Erstklassige Funktionen mit Typ Parameter

Irgendeine Idee, wenn das in scala möglich ist und wie man das macht?

var increase = [T](x: T) => x + 1 
println(increase(10)) 

Antwort

1

Sie können keine anonyme Funktion mit einem Typparameter definieren.

Stattdessen können Sie Erhöhung als eine Methode definieren:

def increase[T: Numeric](x: T, y: T): T = implicitly[Numeric[T]].plus(x, y) 

Und dann nennen es

println(increase(10, 1)) 
+0

Ist die scala Einschränkung an dieser Stelle? – Pavel

+0

Sie können es eine Einschränkung nennen, aber es ist derzeit nicht möglich. –

+0

Ok, ich sehe, es ist mehr, um Leute zu ermutigen, spezifische Signatur für Methode zu definieren. Vielen Dank! – Pavel