7

我知道许多 ruby​​ 风格指南坚持在方法定义的方法参数周围加上括号。而且我了解方法调用有时在语法上需要括号。

但是任何人都可以提供为什么 Ruby需要在方法定义的参数周围加上括号的例子吗?基本上,我正在寻找“它看起来更好”之外的原因。

4

2 回答 2

18

如果此评论中指出的既没有括号也没有分号,那将是模棱两可的。

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]
于 2013-02-05T08:53:12.090 回答
-2

另一个例子是当你想传递一个哈希作为参数时,例如

这不起作用:

MyTable.update_all { col_a: 1, col_b: 2 }

因为 { } 用于块而不是哈希

添加括号确实有效。

MyTable.update_all({ col_a: 1, col_b: 2 })

在 update_all 的情况下,它最多需要 3 个散列作为参数,因此指示哪些值进入哪个散列很重要。

于 2013-02-23T06:50:11.407 回答