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"}

最佳答案

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/

相关文章:

ruby-on-rails - 带有数组的 simple_form 中的禁用单选按钮

ruby-on-rails - 在 Ruby 1.9 中使用 instance_eval 进行常量查找

ruby - 在 Cucumber 中使用带有背景的变量

ruby-on-rails - Ruby on Rails DynamoDB AWS 开发工具包 v2

ruby - 使用 .any 方法迭代数组组合方法

ruby - JRuby "no such file to load"

ruby-on-rails - 我如何在 Ubuntu 中使用 gem?

ruby - 如何循环计数?

ruby-on-rails - 由于 ruby​​gems (LoadError),无法在 Rails 应用程序中运行测试

ruby - 在 Ubuntu 14.04 上安装 Compass 1.0.1 失败