Ich entdeckte dieses interessante "Phänomen", wenn ein Funktionsliteral definiert ist, ein Tupel als seinen Eingabeparameter() aufzunehmen. Es kann auf angewendet werden 1. ein Tupel 2. eine Liste von Argumenten des gleichen Typs wie die Komponenten des TupelsWarum Funktion Literal mit einzelnen Tupel-Argument akzeptiert auch eine Liste von Argumenten?
Kann mir jemand erklären, warum das passieren kann? Eigentlich erwartete ich 2.
scala> val foo = (x:List[Int],y:Int) => x.length + y
foo: (List[Int], Int) => Int = <function2>
scala> val bar = (x:(List[Int],Int)) => x._1.length + x._2
bar: ((List[Int], Int)) => Int = <function1>
scala> foo((List(1,2,3),10))
<console>:13: error: not enough arguments for method apply: (v1: List[Int], v2: Int)Int in trait Function2.
Unspecified value parameter v2.
foo((List(1,2,3),10))
^
scala> foo(List(1,2,3),10)
res37: Int = 13
scala> bar(List(1,2,3),10)
res38: Int = 13
scala> bar((List(1,2,3),10))
res39: Int = 13
Dank dieser half mir meine Zweifel zu klären – laiboonh