unless operator ruby operators

operator - ¿Operador sin incremento(++) en Ruby?



ruby ||= (3)

Ruby no tiene operador pre / post incremento / decremento. Por ejemplo, x++ o x-- no se analizarán. Más importante aún, ++x o --x no hará nada! De hecho, se comportan como múltiples operadores de prefijo unarios: -x == ---x == -----x == ...... Para incrementar un número, simplemente escriba x += 1 .

Tomado de las cosas que los recién llegados a ruby ​​deben saber (enlace actualizado para usar la página en caché, el enlace original está roto)

Eso lo explica mejor que nunca.

EDITAR: y la razón del propio autor de la lengua ( source ):

  1. ++ y - NO son operadores reservados en Ruby.
  2. Los operadores de incremento / decremento de C son en realidad tareas ocultas. Afectan a las variables, no a los objetos. No se puede realizar la asignación a través del método. Ruby usa el operador + = / - = en su lugar.
  3. El yo no puede ser un objetivo de asignación. Además, la alteración del valor del número entero 1 puede causar una confusión grave en todo el programa.

Posible duplicado:
¿Por qué Ruby no soporta i ++ o i— para fixnum?

¿Por qué no hay operador de incremento en Ruby?

p.ej

i++ ++i

¿Se usa el operador ++ para algo más? ¿Hay una razón real para esto?


De una source :

(1) ++ y - NO son operadores reservados en Ruby.

(2) Los operadores de incremento / decremento de C son en realidad tareas ocultas. Afectan a las variables, no a los objetos. No se puede realizar la asignación a través del método. Ruby usa el operador + = / - = en su lugar.

(3) el yo no puede ser un objetivo de asignación. Además, la alteración del valor del número entero 1 puede causar una confusión grave en todo el programa.

matz.


No creo que la notación esté disponible porque, a diferencia de PHP o C, todo en Ruby es un objeto.

Claro que podrías usar $var=0; $var++ $var=0; $var++ en PHP, pero eso es porque es una variable y no un objeto. Por lo tanto, $var = new stdClass(); $var++ $var = new stdClass(); $var++ probablemente lanzaría un error.

No soy un programador de Ruby o RoR, así que estoy seguro de que alguien puede verificar lo anterior o rectificarlo si es incorrecto.