Quand il est en effet pas défini, il obtient la valeur nil
juste parce qu'il a été « touché » Ruby:« !? Foo = true si elle est définie foo » ne fonctionnera pas comme prévu
$ irb
ruby-1.9.2-p0 > foo = true if !defined? foo
=> nil
ruby-1.9.2-p0 > foo
=> nil
ruby-1.9.2-p0 > if !defined? bar
ruby-1.9.2-p0 ?> bar = true
ruby-1.9.2-p0 ?> end
=> true
ruby-1.9.2-p0 > bar
=> true
de sorte que le if
... end
fonctionne comme prévu, mais pas foo = true if ...
.
C'est parce que foo est défini au moment où vous appelez 'defined?'. Je ne vois pas comment cela est inattendu – NullUserException
NullUserException: Donc, il ne fait pas la vérification 'if' en premier? Intéressant. –