Chr*_*ris 8 ruby attributes instance-variables
所以我知道你可以通过调用获取Ruby中的所有实例变量#instance_variables,但是如果它们尚未设置,那么它们就不会显示出来.
例
class Walrus
attr_accessor :flippers, :tusks
end
w = Walrus.new
w.instance_variables # => []
w.tusks # => nil
w.instance_variables # => [:@tusks]
Run Code Online (Sandbox Code Playgroud)
我想立即访问attr_accessor定义的所有实例变量.
w = Walrus.new
w.instance_variables # => [:@tusks, :@flippers]
Run Code Online (Sandbox Code Playgroud)
Ser*_*sev 15
嗯,他们还不存在.实例变量在第一次分配时就会存在.如果您想在全新的实例中使用它们,请在构造函数中触摸它们.
class Walrus
attr_accessor :flippers, :tusks
def initialize
self.flippers = self.tusks = nil
end
end
w = Walrus.new
w.instance_variables # => [:@tusks, :@flippers]
Run Code Online (Sandbox Code Playgroud)
好吧,attr_accessor创建一对方法,一个setter和一个getter.我不确定是否有内置的方法来获取列表,但是您可以查看结果对的实例方法:
Walrus.instance_methods.find_all do |method|
method != :== &&
method != :! &&
Walrus.instance_methods.include?(:"#{method}=")
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8943 次 |
| 最近记录: |