はい、実際に持っています。これは、私が持っていたものからわずかに変更およびトリミングされたものです。
class Widget
# class instance variable pattern
class << self; attr_accessor :color; end
def show_color()
"This widget is #{self.class.color}"
end
end
class WidgetR < Widget
@color = "Russet"
end
class WidgetC < Widget
@color = "Cordovan"
end
class WidgetL < Widget
@color = "Liver"
end
WidgetR.new.show_color #=> "This widget is Russet"
しかし、私がそれを使用した場合、それが本当に必要かどうかはわかりません。メソッドをオーバーライドすることもできました。または色の方法を提供しました。または、クラス変数にハッシュとして格納します。または、各インスタンスにコピーを保持することもできます(わかりました、それはちょっとうんざりです)。きっと他にも可能性はあると思います…
さまざまな代替手段があり、構文は厄介です。私が推測していることを考えると、それを使用するのが最も自然なことである場合は、おそらくかなりまれです.
クラス変数とインスタンス変数を使用してこの動作を再現してみて、実現が難しいことを確認すると役立つ場合があります (ただし、メソッドを定義する場合などは簡単です)。
CJ