使用hash参数调用函数

问题描述 投票:-1回答:1

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

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"

但这种格式不起作用:

  • func1 {somekey: "somevalue"}

请解释一下。

ruby
1个回答
1
投票

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

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

select

您可以将其称为“内联”块,它可以替代使用[1, 2, 3].select { |x| x >= 2 } # => [2, 3] (略有不同)。在我看来,最好坚持在这里使用括号do..end

()
© www.soinside.com 2019 - 2024. All rights reserved.