Ich habe ein Problem mit impliziten Konvertierungen und Funktionen höherer Ordnung. Es scheint, dass eine implizite Umwandlung einer Funktion in eine Funktion zweiter Ordnung nur funktioniert, wenn die zu konvertierende Funktion mindestens zwei Parameter hat.Die implizite Umwandlung einer Funktion in eine Funktion zweiter Ordnung funktioniert nur, wenn die Konvertierungsfunktion mindestens zwei Parameter hat.
Works:
implicit def conv(foo: Integer => String): String => String = null
funktioniert nicht:
implicit def conv(foo: Integer => String): String => String => String = null
Works:
implicit def conv(foo: (Integer, Integer) => String): String => String => String = null
Voll Beispiel mit Point of Failure:
{
implicit def conv(foo: Integer => String): String => String = null
def baadf00d(foo: Integer): String = null
def deadbeef(foo: String => String) = null
deadbeef(conv(baadf00d))
deadbeef(baadf00d)
}
{
implicit def conv(foo: Integer => String): String => String => String = null
def baadf00d(foo: Integer): String = null
def deadbeef(foo: String => String => String) = null
deadbeef(conv(baadf00d))
deadbeef(baadf00d) // <-------- DOES NOT COMPILE!
}
{
implicit def conv(foo: (Integer, Integer) => String): String => String => String = null
def baadf00d(foo: Integer, bar: Integer): String = null
def deadbeef(foo: String => String => String) = null
deadbeef(conv(baadf00d))
deadbeef(baadf00d)
}
Was fehlt mir?
Danke!
Sieht aus wie eine implizite Auflösung Warze in Scala zu mir. Welche Scala-Version ist das? – gzm0