Un détail sur leur fonctionnement
Les variables locales sont en Ruby créées lorsque le parseur les rencontres et non dynamiquement à l’exécution ! De plus, un if
ne créé pas de nouveau scope rendant les variables accessibles après la fin de celui-ci. C’est aussi le cas pour unless
, while
, until
et for
.
Un exemple plus intéressant mettant mieux en évidence l’étape du parseur. Dans le 1e if
, le parseur voit et créé la variable a
après la condition qui sera donc fausse au moment de l’exécution. Dans le 2e cas, il voit et créé b
avant ! (Un if
inline n’est donc pas équivalent !)
Le lien vers la documentation Ruby des variables locales.