From: ohrsts@... Date: 2007-07-11T04:36:26+09:00 Subject: [ruby-list:43702] Re: require の使いかた ? 小原です。 あづみ様、メールありがとうございます。 > > require 'xxx' によって load されるライブラリでの > > トップレベルの(英小文字の)変数は、ローカル変数になる > > と言うことでしょうか。 は、少しおかしかったでしょうか。私の言いたかったのは、次の ようなことです。 ------mmhsh.rb---------------- # hash m code => 会員名 をつくる m={} f=open("members","rb") while s=f.gets key=s[0,3];val=s[4,20] m[key]=val end f.close M=m #これを書き足す ------mmhsh.rb end------------ --------- y.rb --------------- #!/usr/bin/ruby require 'mmhsh' puts M["001"] # m を M に変更 ---------- y.rb end----------- y.rb では、mmhsh.rb のローカル変数は トップレヴェルからは、参照できない。 何故かと言えば、require された mmhsh.rb のコードは、y.rb の中では、あたかもひとつの モジュールように扱われるから。(これは私の独断) レファランスマニュアルの require の項目に このあたりの事情が書かれていると、 ありがたかった、と言うことです。 [ruby-list:34278] を読むと、たぶん星澤様も、 同じ様に考えられたのではないかと、思えます。 > 小原さんが[ruby-list:43700]で書かれた、 > 定数(英大文字から始まる名前)を使うやり方は > ちょっと珍しいかなと思います。 通常は、どんなにするのでしょうか? 定数のスコープに付いては、[ruby-list:43693] で、氏久様の書かれているのを、参考にしました。 グローバル変数 $M より 定数 M のほうが入力が 楽なので、、、。 それと、レファランスマニュアルの変数と定数の 項にかなり詳しく説明されています。 以上 ありがとうございました。