ruby でスペースによるメソッドコールが可能な文脈は?
ruby ではスペースによって引数付きのメソッドコールを表すことができますが、これがどういうタイミングで可能なのかが分からないな、と思っています。
例えば、以下ではメソッドコールは成功します。
[1] pry(main)> ([1].take 1).to_s
=> "[1]"
しかし、以下では成功しません。
[2] pry(main)> true ? [1] : [0].take 1
SyntaxError: unexpected tINTEGER, expecting end-of-input
true ? [1] : [0].take 1
^
この失敗している例において、文法的な解釈として、 [0].take 1
をひとつのメソッドコールとして解釈してくれてもいいかと思いましたが、(それ以外に正しい式の木を構築する方法がないはずなので)そうはなっていない様子です。
質問
ruby においてスペースによってメソッドコールができる文脈は何ですか?