2011-07-01 2 views
1

他のクラス定義の "default"スコープでvarにアクセスするにはどうすればよいですか?"デフォルト"スコープの変数にアクセスする方法

var = 1 

class MyClass 
def self.show 
var 
end 

MyClass.show #=> 1 

とところで、私は「デフォルト」範囲のリターンmainで自己に気づく、これは何ですか?

答えて

0

これはできません。 var = ...のように定義された変数は、常にローカル変数です。

グローバル変数の定義は、$var = ...によって行われます。

別のよりハックのアプローチは、インスタンス変数(@var = ...)を定義することになるが、これは何とか仕事の価値があるとは思えない、あなたのMyClass.showmainインスタンスを取得するためにあなたを必要とします。

+0

したがって、mainはObjectのインスタンスですか? – mko

+0

Rubyのすべてが 'Object'のインスタンスです。インスタンス変数やメソッドなどをアタッチすることができます。しかし、別のオブジェクトのインスタンスを参照するのはかなりハッキリです。私はそれほど奇妙な何かをする正当な理由を見ることができません。 – Koraktor

+0

私はルビーのコンセプトを深く理解する必要があります。ありがとう – mko

3

確かに良い方法があると思いますが、Rubyを初めて使用しているので、varの代わりに$varを使用します。そうすることでグローバルになります。 :-)

関連する問題