使用hash参数调用函数

时间:2018-03-06 08:34:01

标签: ruby

我定义了一些这样的函数:

def func1(hash)
    hash.each do |key, value|
       puts "#{key}, #{value}"
    end
end

我可以这样调用函数:

  1. func1({somekey: "somevalue"})
  2. func1(somekey: "somevalue")
  3. func1 somekey: "somevalue"
  4. 但这种格式不起作用:

    • func1 {somekey: "somevalue"}

    请解释一下。

1 个答案:

答案 0 :(得分:1)

使用由空格分隔的花括号{}是如何在ruby中声明块的,因此解析步骤中存在冲突。 Ruby认为你将这个方法传递给了一个块。

例如,这是一个传递给select方法的块:

[1, 2, 3].select { |x| x >= 2 } # => [2, 3]

您可以将其称为“内联”块,它可以替代使用do..end(略有差异)。 在我看来,最好坚持使用括号()

func1({somekey: "somevalue"})