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 に答える