ruby如何使用varz
调用varz[:foo]
方法?
class Component
class << self
def varz
@varz ||= Hash.new
end
end
end
Component.varz[:foo] = 'bar'
puts Component.varz # {:foo=>"bar"}
答案 0 :(得分:3)
class&lt;&lt; self 用于定义将在类上调用的类方法。
其中@varz表示实例变量。你可能想知道,为什么这个实例对象在类方法中做?这是因为类本身是 Class 的实例。
还有一点要注意,在ruby方法中返回它的最后一个语句。所以在你的情况下 Component.varz 返回哈希类型的实例变量@varz。
Component.varz[:foo] = 'bar'
这会将键值对foo和'bar'添加到哈希。
最后,
p Component.varz
您正在打印由varz方法重新录制的值。
答案 1 :(得分:1)
你以错误的方式切割它。 Component.varz
是方法调用。对于它的结果(这是一个哈希),[:foo] =
适用。 []
和[]=
方法的特殊之处在于您不会在接收方和方法之间放置句点。