Duplicate possible:
Pourquoi Ruby ne supporte-t-il pas i ++ ou i— pour Fixnum?
Pourquoi n'y a-t-il pas d'opérateur d'incrémentation dans Ruby?
par exemple.
i++
++i
Est-ce que l'opérateur ++
est utilisé pour autre chose? Existe-t-il une raison réelle ?
Ruby n'a pas d'opérateur pré/post incrémentation/décrémentation. Par exemple,
x++
oux--
ne pourra pas être analysé. Plus important encore,++x
ou--x
ne fera rien! En fait, ils se comportent comme plusieurs opérateurs de préfixe unaires:-x == ---x == -----x == ......
Pour incrémenter un nombre, écrivez simplementx += 1
.
Tiré de "Ce que les nouveaux venus sur Ruby devraient savoir" ( archive , miroir )
Cela explique mieux que je ne pourrais jamais.
EDIT: et le motif de l'auteur de la langue lui-même ( source ):
- ++ et - ne sont pas des opérateurs réservés en Ruby.
- Les opérateurs d'incrémentation/décrémentation de C sont en fait des affectations masquées. Ils affectent des variables, pas des objets. Vous ne pouvez pas effectuer d’affectation via une méthode. Ruby utilise plutôt l'opérateur + =/- =.
- le moi ne peut pas être une cible d'affectation. De plus, la modification de la valeur du nombre entier 1 peut entraîner une confusion grave tout au long du programme.
D'un posté par Matz :
(1) ++ et - ne sont pas des opérateurs réservés en Ruby.
(2) Les opérateurs d'incrémentation/décrémentation de C sont en fait des affectations masquées. Ils affectent des variables, pas des objets. Vous ne pouvez pas effectuer d’affectation via une méthode. Ruby utilise plutôt l'opérateur + =/- =.
(3) le soi ne peut pas être une cible de mission. De plus, la modification de la valeur du nombre entier 1 peut entraîner une confusion grave tout au long du programme.
matz.
Je ne pense pas que cette notation soit disponible car, contrairement à PHP ou C, tout ce qui se trouve dans Ruby est un objet.
Bien sûr, vous pouvez utiliser $var=0; $var++
en PHP, mais c'est parce que c'est une variable et non un objet. Par conséquent, $var = new stdClass(); $var++
générera probablement une erreur.
Je ne suis pas un programmeurRuby ou RoR, je suis donc sûr que quelqu'un peut vérifier ce qui précède ou le corriger s'il est inexact.