Ich habe Probleme, eine Funktion zuzuordnen, die einen optionalen Parameter benötigt. Ich erhalte den gleichen Typfehler, wie wenn der Parameter nicht optional wäre. Hier ist eine einfache Illustration:
scala> def multiple(m: Int, n: Int = 2) = m * n
multiple: (m: Int,n: Int)Int
scala> multiple(5)
res0: Int = 10
scala> multiple(5, 7)
res1: Int = 35
scala> (1 to 10).map(multiple)
<console>:7: error: type mismatch;
found : (Int, Int) => Int
required: (Int) => ?
(1 to 10).map(multiple)
Es gibt eine Möglichkeit, dies zu bewerkstelligen, aber dazu muss das Standardargument wiederholt werden, was ein Alptraum für die Wartung ist:
scala> (1 to 5).map { n => multiple(n, 2) }
res6: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4, 6, 8, 10)
Gibt es einen besseren Weg, dies zu tun? Allgemeiner gefragt: Warum scheint eine Funktion mit einem optionalen Parameter denselben Typ zu haben, wie wenn der Parameter nicht optional wäre? Was ist der tatsächliche Typ von multiple
?