6

このコード片:

def func *; end
[func "hello"]

Ruby 1.8.7 ではエラーなしで解析されますが、構文エラーが返されます。

syntax error, unexpected ']', expecting '}'

Ruby >= 1.9 で。What is the difference between Ruby 1.8 and Ruby 1.9を調べましたが、これへの参照が見つかりませんでした。誰がこれを引き起こしている変化を知っていますか?

4

1 に答える 1

5

曖昧さを避けるためです。次の点を考慮してください。

def foo(a, b = 1) # foo takes an optional second argument
end

[foo 1, 2]

[(foo 1), 2]これはまたは として解釈できます[(foo 1, 2)]

Calling Methodsのドキュメントには 2 つの参照があります(ただし、配列リテラルとは直接関係ありません)。

括弧はオプションであることに注意してください...括弧の使用と省略に違いがある場合を除きます

多くの場合、メッセージを送信するときに括弧は必要ありません...ただし、あいまいさを避けるために括弧は必要です。

于 2013-09-10T16:20:11.487 に答える