Comment accédez-vous des variables définies dans un fichier inclus?
# inc.rb foo = "bar"; # main.rb require 'inc.rb' puts foo # NameError: undefined local variable or method `foo' for main:Object
3 Réponses :
Vous ne pouvez pas accéder à un local à l'extérieur de la portée, il a été défini dans le fichier dans ce cas. Si vous souhaitez des variables qui croient les limites du fichier, faites-leur quelque chose que des locaux. Si vous ne voulez vraiment pas mettre une sorte de décoration sur le symbole (parce que vous n'aimez pas la façon dont il se lit, peut-être), un piratage commun est juste pour le définir comme méthode: $ foo code>,
foo code> et
@foo code> fonctionnera tous. P>
DEF FOO () "bar" fin code>. p>
Dans quelle version rubis cela a changé? Je l'utilise donc depuis pour toujours avec vagabond config
J'ai accepté la réponse de Chuck, car c'est une solution décente, mais j'utilisais effectivement une méthode différente, que je pensais partager. C'est incroyablement hacky, mais était utile à mes besoins. Je devais numériser un répertoire avec des centaines de fichiers, chacun d'entre eux créé un objet avec le même nom, puis vider certaines informations sur chaque objet. Pour tout objectif sérieux et non temporaire, je ne le feriez pas em> recommander cela! foo = ""
eval File.open('inc.rb').read
puts foo # "bar"
Je les définis habituellement comme méthodes. Semblable à ce que Nickf a dit.
file1: p> fichier2: p> ajoutez simplement ajoutez un: p> au fichier que vous souhaitez utiliser la méthode / la variable dans. p> p> exiger_relative 'chemin de fichier / nom de fichier' code> ou
nécessite_relative 'nom de fichier' code> <= si les fichiers sont dans la même répertoire. p>