次のような固有クラスでattr_accessorメソッドを定義することは可能だと思いました。
class IOS
@@modules_paths = "hello"
class << self
attr_accessor :modules_paths
end
end
puts IOS::modules_paths
しかし、これは何も返しません。
それを行う方法はありますか?
次のような固有クラスでattr_accessorメソッドを定義することは可能だと思いました。
class IOS
@@modules_paths = "hello"
class << self
attr_accessor :modules_paths
end
end
puts IOS::modules_paths
しかし、これは何も返しません。
それを行う方法はありますか?
クラスに追加するの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メソッドをコピーするだけです。
IOS::modules_paths=
setterメソッドを呼び出すことも、対応する@modules_paths
インスタンス変数をどこにでも割り当てることもありません。したがって、@modules_paths
は単一化され、したがって単一化さIOS.modules_paths
れた変数を返します。Rubyでは、初期化されていない変数は評価されnil
、puts nil
何も出力されません。