231 votes

Pas d'opérateur d'incrémentation (++) dans Ruby?

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?

273voto

Dave Points 3005

Ruby n'a pas de pré/post incrémentation/décrémentation de l'opérateur. Par exemple, x++ ou x-- é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'écrire x += 1.

Prises de choses que les nouveaux arrivants à ruby devrait savoir (lien mis à jour pour utiliser la mise en cache de la page, le lien d'origine est cassé)

Qui l'explique mieux que je ne pourrais le faire.

EDIT: et la raison de l'auteur lui-même (source):

  1. ++ et -- ne sont PAS réservés à l'opérateur en Ruby.
  2. 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.
  3. 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.

28voto

mikej Points 30224

À 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.

1voto

Martin Bean Points 9945

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X