redes - Preferencia del operador en Scala
informacion mediatica (4)
las reglas no modificadas pueden ser inconvenientes, porque tienes restricciones para nombrar tus métodos
- no tiene ninguna restricción al nombrar sus métodos. Por ejemplo, puede definir los métodos +, -, * y etc. para una clase.
- también debemos seguir las "reglas no modificadas" de facto (impuestas por las reglas de precedencia del operador de Scala) mencionadas en la respuesta anterior ( share ) por Thomas Jung: es común para muchos lenguajes de programación si no para todos. y álgebra abstracta; no necesitamos redefinir la precedencia del operador para a + b * c.
Ver el Capítulo 6 del libro http://www.scala-lang.org/docu/files/ScalaByExample.pdf para el ejemplo de clase "Racional".
Me gusta la propuesta de Scala sobre la precedencia de los operadores, pero en algunos casos raros, las reglas no modificadas pueden ser inconvenientes, porque usted tiene restricciones para nombrar sus métodos. ¿Hay formas de definir otras reglas para una clase / archivo, etc. en Scala? Si no, ¿se resolvería en el futuro?
Hubo una solicitud de función planteada en el tenedor de nivel de tipo del compilador scala , una versión del compilador que ''previsualiza'' las características experimentales. Los desarrolladores sugirieron que si alguien escribiera un SIP para esto, se podría considerar su implementación.
Pero en su estado actual, no hay forma de anular la precedencia. Sus reglas se definen formalmente en la especificación del lenguaje .
La precedencia del operador se fija en la Referencia de Scala - 6.12.3 Operaciones Iniciales por el primer carácter en el operador. Enumerado en orden creciente de precedencia:
(all letters)
|
^
&
= !
< >
:
+ -
* / %
(all other special characters)
Y no es muy probable que cambie. Probablemente creará más problemas de los que corrige. Si se usa la precedencia normal del operador, cambiarla por una clase será bastante confuso.
No existe tal habilidad y es poco probable que se agregue en un futuro previsible.