En fait en Ruby, comme en Perl (mais en Perl on a un mode strict si on veut), les variables sont automatiquement créées:
a = 2
crée la variable a et lui affecte 2. Par contre, lorsqu'on utilise une variable pour autre chose que l'affectation, soit on se heurte à un objet initialisé à Nil, qui n'a pas la méthode qu'on essaye d'utiliser, soit on se heurte à un "NameError: undefined local variable or method". Ce n'est pas idéal, mais au moins la plupart des erreurs que l'on pourrait identifier tout en gardant le typage dynamique sont identifiées assez vite. Par exemple, impossible de faire
> toto = 2
> a = 3 + totp
NameError: undefined local variable or method `totp'
Ou bien avec des variables de classe (qui elles sont initialisées à Nil)
> @toto = 2
> a = 3 + @tpto
TypeError: nil can't be coerced into Fixnum
[^] # Re: C++ trop gros
Posté par Yusei (Mastodon) . En réponse au journal Le C++ du futur. Évalué à 3.
a = 2
crée la variable a et lui affecte 2. Par contre, lorsqu'on utilise une variable pour autre chose que l'affectation, soit on se heurte à un objet initialisé à Nil, qui n'a pas la méthode qu'on essaye d'utiliser, soit on se heurte à un "NameError: undefined local variable or method". Ce n'est pas idéal, mais au moins la plupart des erreurs que l'on pourrait identifier tout en gardant le typage dynamique sont identifiées assez vite. Par exemple, impossible de faire
> toto = 2
> a = 3 + totp
NameError: undefined local variable or method `totp'
Ou bien avec des variables de classe (qui elles sont initialisées à Nil)
> @toto = 2
> a = 3 + @tpto
TypeError: nil can't be coerced into Fixnum