Con los parámetros con nombre comoLos parámetros con nombre conducen a problemas de mantenimiento y legibilidad inferior?
def f(x : Int = 1, y : Int = 2) = x * y
sus nombres de parámetros se convierten en parte de la interfaz
f(x=3)
Ahora bien, si desea cambiar los nombres de los parámetros a nivel local, que se ven obligados a perserve el nombre público del parámetro :
def f(x : Int = 1, y : Int = 2) = {
val (a,b) = (x,y)
a * b
}
Si esto es un problema real? ¿Hay una sintaxis para apoyar esto directamente? ¿A quiénes se dirigen otros idiomas?
Un pequeño ejemplo de los problemas que se pueden ejecutar en si cambia los nombres de parámetros, como se sugiere por Jon.
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
Buen punto, ni siquiera estaba pensando en términos de público frente a API no pública. – R0MANARMY
He agregado un código de muestra para el problema de cambio de nombre que sugeriste. –