0

スーパークラスとサブクラスのセットがあります。各サブクラスで、同じ名前のクラスインスタンス変数を定義していますx。これらのクラスの1つにアクセサーを作成するには、サブクラス定義で使用します。

class << self
  attr_accessor :x
end

すべてのサブクラス定義でこれらの同じコード行を使用することは避けたいと思います。しかし、これをスーパークラス定義に入れると、スーパークラスのインスタンス変数のアクセサーを定義しませんか?それは私が望んでいることではありません。すべてのサブクラスのクラスインスタンス変数のアクセサーを1か所で定義する方法はありますか?

4

1 に答える 1

2

attr_accessorディレクティブは、実際にはx()とx =()の2つのメソッドを定義していることに注意してください。ここで、スーパークラスで2つのパブリックメソッドを宣言した場合、それらはサブクラスで使用できますか?あなたがそれらを再定義しない限り、答えはイエスです。

したがって、このディレクティブをスーパークラスに配置することは問題なく、魅力的に機能します。

于 2012-07-22T20:24:09.817 に答える