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

Duplication possible:
Pourquoi Ruby ne prend-il pas en charge i ++ ou i— pour le 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 ++ utilisé pour autre chose? Y a-t-il une vraie raison à cela?

Ruby n’a pas d’opérateur pré / post-incrémentation / décrémentation. Par exemple, x++ ou x-- ne seront pas x-- . Plus important encore, ++x ou --x ne fera rien! En fait, ils se comportent comme plusieurs opérateurs de préfixes unaires: -x == ---x == -----x == ...... Pour incrémenter un nombre, écrivez simplement x += 1 .

Tiré de choses que les nouveaux arrivants à ruby ​​devraient savoir (lien mis à jour pour utiliser la page en cache, le lien d’origine est rompu)

Cela explique mieux que je pourrais jamais.

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

  1. ++ et – ne sont pas des opérateurs réservés dans Ruby.
  2. Les opérateurs d’incrémentation / décrémentation de C sont en fait des affectations cachées. Ils affectent les variables, pas les objects. Vous ne pouvez pas accomplir l’affectation via la méthode. Ruby utilise plutôt l’opérateur = = / – =.
  3. Soi ne peut pas être une cible d’affectation. En outre, la modification de la valeur de l’entier 1 pourrait entraîner une grave confusion tout au long du programme.

D’après un article de Matz :

(1) ++ et – ne sont PAS des opérateurs réservés dans Ruby.

(2) Les opérateurs d’incrémentation / décrémentation de C sont en fait des affectations cachées. Ils affectent les variables, pas les objects. Vous ne pouvez pas accomplir l’affectation via la méthode. Ruby utilise plutôt l’opérateur = = / – =.

(3) le moi ne peut pas être une cible d’affectation. En outre, la modification de la valeur de l’entier 1 pourrait entraîner une grave confusion tout au long du programme.

  matz. 

Je ne pense pas que la notation soit disponible parce que, contrairement à PHP ou à C, tout est un object dans Ruby.

Bien sûr, vous pourriez utiliser $var=0; $var++ $var=0; $var++ en PHP, mais c’est parce que c’est une variable et non un object. Par conséquent, $var = new stdClass(); $var++ $var = new stdClass(); $var++ provoquerait probablement une erreur.

Je ne suis pas un programmeur Ruby ou RoR, donc je suis sûr que quelqu’un peut vérifier ce qui précède ou le rectifier s’il est inexact.