mit benannten Parametern wieBenannte Parameter führen zu Wartungsproblemen und schlechter Lesbarkeit?
def f(x : Int = 1, y : Int = 2) = x * y
Ihrer Parameternamen Teil der
f(x=3)
Schnittstelle werden
Nun, wenn Sie die Parameternamen lokal ändern mögen, werden Sie den öffentlichen Namen des Parameters perserve gezwungen :
def f(x : Int = 1, y : Int = 2) = {
val (a,b) = (x,y)
a * b
}
Wenn das ein echtes Problem ist? Gibt es eine Syntax, um dies direkt zu unterstützen? Wer geht mit anderen Sprachen um?
Eine kleine Illustration der Probleme, denen Sie begegnen können, wenn Sie die Parameternamen wechseln, wie von Jon vorgeschlagen.
trait X{ def f(x : Int, y : Int) }
class A extends X{
override def f(y : Int, x : Int) = println("" + y + x)
}
val a = new A
scala> a.f(x = 1, y = 2)
21
scala> (a : X).f(x = 1, y = 2)
12
Guter Punkt, dachte nicht einmal in Bezug auf öffentliche vs nicht-öffentliche API. – R0MANARMY
Ich habe einen Beispielcode für das von Ihnen vorgeschlagene Namensumschaltungsproblem hinzugefügt. –