被ruby的变量和方法弄糊涂了

被ruby的变量和方法弄糊涂了,ruby,Ruby,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"} 类组件 类“bar”} 你切错了组件。varz是一个方法调用。对于它的结果(这是一个散列),[:foo]=适用。[]和

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"}
类组件
类“bar”}

你切错了<代码>组件。varz是一个方法调用。对于它的结果(这是一个散列),
[:foo]=
适用。
[]
[]=
方法的特殊之处在于,您没有在接收器和方法之间设置一个周期。

您以错误的方式剪切了它<代码>组件。varz是一个方法调用。对于它的结果(这是一个散列),
[:foo]=
适用。
[]
[]=
方法的特殊之处在于,你不会在接收者和方法之间设置一个时间段。

你从哪里获得知识?我建议买一本好书。这将消除许多困惑。你从哪里获得知识?我建议买一本好书。它将消除“对它(它是一个散列)”的许多混淆——那么它是一个方法调用还是一个散列呢索引器应用于上述方法调用的结果,而不是调用本身。我认为这是一个更好的答案。因为我知道ruby如何将类视为对象以及它如何返回值,但我只是对它如何使用varz方法和[]感到困惑,正如您在上面解释的那样。“对它(它是一个哈希)”-那么它是一个方法调用还是一个哈希?:)索引器应用于上述方法调用的结果,而不是调用本身。我认为这是一个更好的答案。因为我知道ruby如何将类视为对象,以及它如何返回值,但我只是对它如何使用varz方法和[]感到困惑,您已经在上面解释过了。您的答案非常好,但我认为更好的答案在下面。因为我知道ruby如何将类视为对象以及它如何返回值,但我对它如何使用varz方法和[]感到困惑。你不是直接使用varz方法,而是通过varz方法使用对象返回。是的,我现在知道了。非常感谢。你的答案很好,但我认为更好的答案在下面。因为我知道ruby如何将类视为对象以及它如何返回值,但我对它如何使用varz方法和[]感到困惑。你不是直接使用varz方法,而是通过varz方法使用对象返回。是的,我现在知道了。谢谢。
Component.varz[:foo] = 'bar'
p Component.varz