为什么这段代码在ruby18和ruby19中会出现语法错误:
我本以为它的意思是:调用方法
然而,在ruby18中,以下所有内容都被解释为语法正确。只有第一个示例被Ruby19视为语法不正确。
a (b.c do;end)
我本以为它的意思是:调用方法
a
并传入一个参数。空格后面的括号不是方法参数括号,而只是普通的括号,就像你几乎可以在任何地方放置一样。参数是对象b
上调用方法c
并带有一个块的返回值。然而,在ruby18中,以下所有内容都被解释为语法正确。只有第一个示例被Ruby19视为语法不正确。
a (b do;end)
并且:
a (b.c {})
并且:
(b.c do;end)
a (b.c do;end)
是语法错误。 - DarkDust