Rubyのモジュールでクラス変数と同様に動作する変数を作成する方法はありますか?つまり、モジュールのインスタンスを初期化しなくてもアクセスできますが、(モジュールの定数とは異なり)変更できます。
Rubyのモジュールでクラス変数と同様に動作する変数を作成する方法はありますか?つまり、モジュールのインスタンスを初期化しなくてもアクセスできますが、(モジュールの定数とは異なり)変更できます。
回答:
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"
defined?(@@foo) => "class variable"
。
@
インスタンス変数から同じ結果が得られることに気付きました。クラス変数を使用する特定の理由はありますか?返信いただきありがとうございます。
T.get
とT::get
?
モジュールにクラスインスタンス変数を設定できます。
module MyModule
class << self; attr_accessor :var; end
end
MyModule.var = 'this is saved at @var'
MyModule.var
=> "this is saved at @var"