我知道许多 ruby 风格指南坚持在方法定义的方法参数周围加上括号。而且我了解方法调用有时在语法上需要括号。
但是任何人都可以提供为什么 Ruby需要在方法定义的参数周围加上括号的例子吗?基本上,我正在寻找“它看起来更好”之外的原因。
我知道许多 ruby 风格指南坚持在方法定义的方法参数周围加上括号。而且我了解方法调用有时在语法上需要括号。
但是任何人都可以提供为什么 Ruby需要在方法定义的参数周围加上括号的例子吗?基本上,我正在寻找“它看起来更好”之外的原因。
如果此评论中指出的既没有括号也没有分号,那将是模棱两可的。
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]
另一个例子是当你想传递一个哈希作为参数时,例如
这不起作用:
MyTable.update_all { col_a: 1, col_b: 2 }
因为 { } 用于块而不是哈希
添加括号确实有效。
MyTable.update_all({ col_a: 1, col_b: 2 })
在 update_all 的情况下,它最多需要 3 个散列作为参数,因此指示哪些值进入哪个散列很重要。