2 votes

Comment puis-je "exiger" dans la portée actuelle ?

Je ne suis pas sûr à 100% du fonctionnement de la portée des variables Ruby, et j'ai du mal à utiliser la fonction require "path.rb" déclaration. Voici un extrait de code qui cause le problème :

Fichier a.rb :

a = {
        :hey => "ho"
    }

require "path/to/b.rb" # => true

Fichier b.rb :

b = "harhar"
a[:test] = b

Le champ d'application de la a.rb se trouve à l'intérieur d'un module::class, et non dans la portée globale principale, et lorsque j'essaie d'accéder à l'objet a variable dans b.rb Je reçois une erreur disant que le a n'est pas dans la portée actuelle.

J'ai lu quelque part que les fichiers inclus devaient être dans leur propre champ d'application afin de ne pas entrer en conflit. Si c'est le cas, quelle est la convention pour contourner ce problème ?

2voto

Chuck Points 138930

Les variables locales de haut niveau sont locales au fichier. Au lieu d'utiliser les variables locales, vous devriez utiliser les variables d'instance, les variables de module, les méthodes, les constantes ou les globales - elles sont toutes visibles de partout dans votre programme. (Le choix de l'une ou l'autre dépend du cas particulier. Chaque façon de stocker des données aura plus de sens dans certains cas que dans d'autres).

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