为什么这在Ruby中有效:
"foo" "bar"
# => "foobar"
我不确定为什么字符串被连接起来,而不是给出语法错误.
我很好奇这是否是预期的行为,是解析器负责争论(两个没有运算符的字符串被视为单个字符串),还是语言定义本身指定了这种行为(隐式concat).
为什么这在Ruby中有效:
"foo" "bar"
# => "foobar"
我不确定为什么字符串被连接起来,而不是给出语法错误.
我很好奇这是否是预期的行为,是解析器负责争论(两个没有运算符的字符串被视为单个字符串),还是语言定义本身指定了这种行为(隐式concat).
实现细节可以在Ruby源代码中的parse.y
文件中找到.具体来说是here.
Ruby string
可以是tCHAR
(例如?q
)、string1
(例如"q"、"q"或%q{q}),也可以是string1
和string
本身串联的递归定义,这会导致字符串表达式(例如"foo" "bar"
、'foo' "bar"
或?f "oo" 'bar'
)被串联.