クラス変数と同様に動作するRubyのモジュールに変数を作成する方法はありますか?これが意味するのは、モジュールのインスタンスを初期化せずにアクセスできるということですが、変更することはできます(モジュールの定数とは異なります)。
100040 次
4 に答える
173
Rubyはモジュール内のクラス変数をネイティブにサポートしているため、プロキシや疑似クラス変数ではなく、クラス変数を直接使用できます。
module Site
@@name = "StackOverflow"
def self.setName(value)
@@name = value
end
def self.name
@@name
end
end
Site.name # => "StackOverflow"
Site.setName("Test")
Site.name # => "Test"
于 2011-04-16T23:52:25.513 に答える
32
インスタンス内から呼び出す必要がない場合は、モジュール本体内でインスタンス変数を使用するだけです。
module SomeModule
module_function
def param; @param end
def param= v; @param = v end
end
SomeModule.param
# => nil
SomeModule.param = 1
SomeModule.param
# => 1
インスタンス変数は、クラスのインスタンスである@param
モジュールに属します。SomeModule
Module
于 2011-04-17T03:02:33.980 に答える
25
モジュールでクラスインスタンス変数を設定できます。
module MyModule
class << self; attr_accessor :var; end
end
MyModule.var = 'this is saved at @var'
MyModule.var
=> "this is saved at @var"
于 2012-01-09T05:07:35.090 に答える
8
モジュール定義内で値を初期化することもできます。
module MyModule
class << self
attr_accessor :my_variable
end
self.my_variable = 2 + 2
end
p MyModule.my_variable
于 2016-03-04T12:40:46.673 に答える