我知道很多ruby样式指南都围绕方法定义的方法参数括起来。我理解有时在语法上需要括号用于方法调用。
但是,任何人都可以提供为什么Ruby 需要围绕方法定义的参数的括号的示例?基本上,我正在寻找除“它看起来更好”之外的理由。
答案 0 :(得分:17)
如果你既没有括号也没有分号as pointed out in this comment,那就不明确了。
def foo a end # => Error because it is amgiguous.
# Is this a method `foo` that takes no argument with the body `a`, or
# Is this a method `foo` that takes an argument `a`?
此外,如果要使用复合参数,则不能省略括号:
def foo(a, b), c
p [a, b, c]
end
# => Error
def foo((a, b), c)
p [a, b, c]
end
foo([1, 2], 3) # => [1, 2, 3]
答案 1 :(得分:-2)
另一个例子是你想要将哈希作为参数传递给
这不起作用:
MyTable.update_all { col_a: 1, col_b: 2 }
因为{}用于块而不是散列
添加parens确实有用。
MyTable.update_all({ col_a: 1, col_b: 2 })
在update_all的情况下,它最多需要3个哈希值作为参数,因此指出哪些值进入哪个哈希值非常重要。