trait - variables scala
¿Cuál es la diferencia entre=y:=en Scala? (4)
¿Cuál es la diferencia entre =
y :=
en Scala?
Busqué extensamente en google para "scala colon-igual", pero no pude encontrar nada definitivo.
Scala permite la sobrecarga del operador, donde puede definir el comportamiento de un operador del mismo modo que podría escribir un método.
Como en otros idiomas, =
es un operador de asignación.
No conozco un operador estándar llamado :=
, pero podría definir uno con este nombre. Si ve un operador como este, debe verificar la documentación de lo que esté mirando o buscar dónde está definido ese operador.
Hay mucho que puedes hacer con los operadores de Scala. En esencia, puedes hacer que un operador salga virtualmente de cualquier personaje que te guste.
de Martin Odersky:
- Inicialmente teníamos colon-igual para la asignación, al igual que en Pascal, Modula y Ada, y un solo signo igual para la igualdad. Muchos teóricos de la programación argumentarían que esa es la forma correcta de hacerlo. La asignación no es igualdad y, por lo tanto, debe usar un símbolo diferente para la asignación. Pero luego lo probé con algunas personas que venían de Java. La reacción que obtuve fue: "Bueno, este parece un lenguaje interesante. Pero ¿por qué escribes dos puntos iguales ? ¿Qué es?" Y le expliqué que es así en Pascal. Dijeron: "Ahora entiendo, pero no entiendo por qué insistes en hacer eso". Entonces me di cuenta de que esto no es algo en lo que quisiéramos insistir. No queríamos decir: "Tenemos un lenguaje mejor porque escribimos dos puntos en vez de iguales para la asignación". Es un punto totalmente menor, y la gente puede acostumbrarse a cualquiera de los enfoques. Así que decidimos no luchar contra la convención en estas cosas menores, cuando había otros lugares donde queríamos hacer la diferencia .
=
in scala es el operador de asignación real: hace un puñado de cosas específicas sobre las cuales, en general, no tiene control, como
- Dando un valor
val
ovar
cuando se crea - Cambiar el valor de una
var
- Cambiar el valor de un campo en una clase
- Hacer un alias de tipo
- Probablemente otros
:=
no es un operador incorporado, cualquiera puede sobrecargarlo y definirlo para que signifique lo que quiera. La razón por la que a las personas les gusta usar :=
es porque parece muy asignada y se usa como un operador de asignación en otros idiomas.
Entonces, si estás tratando de averiguar qué significa :=
en la biblioteca particular que estás usando ... mi consejo es mirar a través de los Scaladocs (si existen) para un método llamado :=
.
=
realiza la asignación. :=
no está definido en la biblioteca estándar ni en la especificación del lenguaje. Es un nombre que es gratuito para otras bibliotecas o su código para usar, si lo desea.