【问题标题】:Passing Hash values as parameters to methods in Ruby将哈希值作为参数传递给 Ruby 中的方法
【发布时间】:2012-07-31 09:25:29
【问题描述】:

我有一个方法met1,它以哈希值作为参数。

例如:met1('abc' => 'xyz')

定义方法时应该使用什么语法?可以这样吗?

def met1(options)
  puts options
end

我知道上述语法有效。但是如何访问met1 中的单个哈希键和值? (其中键是abc,值是xyz?)谢谢!

【问题讨论】:

    标签: ruby methods hash parameters


    【解决方案1】:

    很简单

    met1("abc" => "xyz")
    
    def met1(options)
      puts options
      # with key
      puts options["abc"]
    end
    

    我假设您知道选项可能包含哪些键,对吧?如果没有,

    def met1(options)
      puts options.keys # options is the hash you passed it, use it like one
    end
    

    【讨论】:

    • 在 options.keys 工作的第二种方式中,如何在不使用 options["abc"] 的情况下打印值?
    • 通过使用“options.values”你可以得到值。
    • 浏览 Ruby Hash 文档。哈希包括 Enumerable 模块,您可以像使用数组一样使用它们。您可以在哈希结构上执行每个、映射、收集、拒绝等操作。当您开始使用 Ruby/Rails 时,这是一个非常重要的类,可以帮助您理解和保存文档
    • 谢谢阿迪亚桑吉。我会这样做的
    【解决方案2】:

    你的语法是正确的。只需在您的方法中使用 options['key'] (如果 'key' 是一个字符串)。习惯上使用符号作为键,所以在你的例子中:

    met1(:abc => 'xyz')
    
    def met1(options)
      puts options[:abc]
    end
    

    【讨论】:

    • 当我这样做时,它说未定义的局部变量键
    • 如果 key 是一个字符串,你应该写 options['key']。如果是符号,你应该写 options[:key]
    猜你喜欢
    • 2016-08-13
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多