0

次のような固有クラスでattr_accessorメソッドを定義することは可能だと思いました。

class IOS
  @@modules_paths = "hello"

  class << self
    attr_accessor :modules_paths
  end

end

puts IOS::modules_paths

しかし、これは何も返しません。

それを行う方法はありますか?

4

2 に答える 2

6

クラスに追加するのattr_accessorは、クラス変数ではなく、クラスレベルのインスタンス変数を使用します。継承が画像に入るとクラス変数がばかげてしまう可能性があるため、これは実際にはより役立つ場合があります。

class IOS
  @modules_paths = "hello"

  class << self
    attr_accessor :modules_paths
  end
end

puts IOS::modules_paths # outputs "hello"

クラス変数を使用するために本当に必要な場合は、メソッドを手動で定義するか、ActiveSupportをプルして使用するcattr_accessor、関連するActiveSupportメソッドをコピーするだけです。

于 2010-09-12T02:16:24.943 に答える
1

IOS::modules_paths=setterメソッドを呼び出すことも、対応する@modules_pathsインスタンス変数をどこにでも割り当てることもありません。したがって、@modules_pathsは単一化され、したがって単一化さIOS.modules_pathsれた変数を返します。Rubyでは、初期化されていない変数は評価されnilputs nil何も出力されません。

于 2010-09-12T02:18:39.963 に答える