シングルトンクラス(静的クラス自体)で変数を使用する
class Single
def self.counter
if @count
@count+=1
else
@count = 5
end
end
end
ルビーでは、どのクラスもインスタンスが1つしかないオブジェクトです。したがって、クラスにインスタンス変数を作成でき、それは「静的」メソッドとして機能します;)
出力:
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux]
=> :counter
Single.counter
=> 5
Single.counter
=> 6
Single.counter
=> 7
メインスコープでこの動作を取得するには、次のようにします。
module Countable
def counter
if @count
@count+=1
else
@count = 5
end
end
end
=> :counter
self.class.prepend Countable # this "adds" the method to the main object
=> Object
counter
=> 5
counter
=> 6
counter
=> 7