ruby 如何varz
通过 using 调用方法varz[:foo]
?
class Component
class << self
def varz
@varz ||= Hash.new
end
end
end
Component.varz[:foo] = 'bar'
puts Component.varz # {:foo=>"bar"}
ruby 如何varz
通过 using 调用方法varz[:foo]
?
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 本身是Class的实例。
还有一点需要注意,在 ruby 方法中返回它的最后一条语句。因此,在您的情况下,Component.varz返回实例变量 @varz ,它是哈希类型。
Component.varz[:foo] = 'bar'
这会将键值对 foo 和 'bar' 添加到哈希中。
最后,
p Component.varz
您正在打印由 varz 方法返回的值。
你剪错了。Component.varz
是一个方法调用。对于它的结果(这是一个哈希),[:foo] =
适用。[]
and方法的[]=
特殊之处在于您没有在接收者和方法之间放置句点。