このコード片:
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を調べましたが、これへの参照が見つかりませんでした。誰がこれを引き起こしている変化を知っていますか?
このコード片:
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を調べましたが、これへの参照が見つかりませんでした。誰がこれを引き起こしている変化を知っていますか?
曖昧さを避けるためです。次の点を考慮してください。
def foo(a, b = 1) # foo takes an optional second argument
end
[foo 1, 2]
[(foo 1), 2]
これはまたは として解釈できます[(foo 1, 2)]
。
Calling Methodsのドキュメントには 2 つの参照があります(ただし、配列リテラルとは直接関係ありません)。
括弧はオプションであることに注意してください...括弧の使用と省略に違いがある場合を除きます
多くの場合、メッセージを送信するときに括弧は必要ありません...ただし、あいまいさを避けるために括弧は必要です。