Duplication possible:
Pourquoi Ruby ne prend-il pas en charge i ++ ou i-for fixnum?Pourquoi n'y a-t-il pas d'opérateur d'incrémentation dans Ruby?
par exemple
i++ ++i
L'opérateur
++
utilisé pour autre chose? Y a-t-il une vraie raison à cela?
Réponses
Trop de publicités?Ruby n'a pas de pré/post incrémentation/décrémentation de l'opérateur. Par exemple,
x++
oux--
échouent à analyser. Plus important encore,++x
ou--x
, ne fait rien! En fait, ils se comportent comme de multiples unaire opérateurs de préfixe:-x == ---x == -----x == ......
D'incrémenter un nombre, il suffit d'écrirex += 1
.Qui l'explique mieux que je ne pourrais le faire.
EDIT: et la raison de l'auteur lui-même (source):
- ++ et -- ne sont PAS réservés à l'opérateur en Ruby.
- C est incrémentation/décrémentation les opérateurs sont en fait cachés affectation. Ils affectent des variables, pas des objets. Vous ne pouvez pas accomplir l'exercice, au moyen de la méthode. Ruby utilise +=/-= opérateur de la place.
- L'auto ne peut pas être une cible de cession. En outre, en modifiant la valeur de l'entier 1 pourrait provoquer de graves confusion tout au long du programme.
À partir d'un affichage par Matz:
(1) ++ et -- ne sont PAS réservés opérateur en Ruby.
(2) C) de l'incrémenter/décrémenter les opérateurs sont en fait cachés affectation. Ils affectent des variables, pas des objets. Vous ne pouvez pas accomplir affectation par l'intermédiaire de méthodes. Ruby utilise +=/-= opérateur de la place.
(3) l'auto ne peut pas être une cible de affectation. En outre, la modification la valeur de l'entier 1 pourrait provoquer de graves confusion tout au long de le programme.
matz.
Je ne pense pas que cette notation est disponible parce que-contrairement à dire PHP ou C-tout en Ruby est un objet.
Bien sûr, vous pourriez utiliser en PHP, mais c’est parce que c’est une variable et non un objet. Par conséquent,
jetterais probablement une erreur.
Je ne suis pas un programmeur Ruby ou RoR, donc je ne sais pas quelqu'un peut vérifier ce qui précède ou rectifier si elle est inexacte.