Dado el siguiente código Scala:¿Por qué Scala define un operador "+ =" para los tipos Corto y Byte?
var short: Short = 0
short += 1 // error: type mismatch
short += short // error: type mismatch
short += 1.toByte // error: type mismatch
no cuestionar la tipificación subyacente - es claro que "a corto valor == + Int".
Mis preguntas son:
1. ¿Hay alguna manera de que el operador pueda ser utilizado?
2. Si no es así, ¿por qué el operador está disponible para su uso en Short & Byte?
[Y por extensión * =, | = = &, etc.]
En realidad, Short no tiene el método "+ =" o "* =", puede consultar el documento corto http://www.scala-lang.org/api/current/index.html#scala. Corto . x someoperator = y están traduciendo a x = x someoperator y por el compilador automáticamente. – Eastsun
@Eastsun Pero tampoco lo hace Int :-) 'a op = b' es azúcar sintáctica para la forma expandida:' a = a op b', que explica el tipo de error (Corto + Corto -> Int). No explica por qué se tomó la decisión o qué uso podría tener este poder, o no. (En C# es perfectamente legal hacer 'byte + = 1' pero no' byte = byte + 1', y el comportamiento es específico en el estándar - hay un lanzamiento implícito al tipo LHS en C#). –
@pst Sí, puedes hacer lo mismo en Java que en C# (Si mal no recuerdo) – Eastsun