Ruby 如何使用 varz[:foo]
调用 varz
方法?
class Component
class << self
def varz
@varz ||= Hash.new
end
end
end
Component.varz[:foo] = 'bar'
puts Component.varz # {:foo=>"bar"}
最佳答案
class << self 用于定义类方法,该方法将在类上调用。
其中 @varz 代表实例变量。你可能会想,那为什么这个实例对象在类方法中做呢?这是因为类本身是Class的实例。
还有一点需要注意,在 ruby 方法中返回它的最后一条语句。因此,在您的情况下 Component.varz 返回哈希类型的实例变量 @varz。
Component.varz[:foo] = 'bar'
这会将键值对 foo 和 'bar' 添加到哈希值中。
最后,
p Component.varz
您正在打印 varz 方法返回的值。
关于ruby - 对ruby的变量和方法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857367/