根据Dave Thomas在pragpub杂志http://pragprog.com/magazines中的最新文章,Ruby 1.9应该接受数组文字中的多个splat参数,例如:
[ *'2'..'10', *%w{ J Q K A } ]
但在我的机器上,我得到解析失败。在1.9.1p378下,我只返回最后一个数组文字,在1.9.2p0下我得到一个解析错误,读取文字之间的逗号。
ruby-1.9.1-p378 :001 > [ *'2'..'10', *%w{ J Q K A } ]
=> ["J", "Q", "K", "A"]
ruby-1.9.2-p0 > [ *'2'..'10', *%w{ J Q K A } ]
SyntaxError: compile error
(irb):13: syntax error, unexpected ',', expecting ']'
更新:我的红宝石设置:
ruby:
interpreter: "ruby"
version: "1.9.2p0"
date: "2010-08-18"
platform: "x86_64-darwin10.4.0"
patchlevel: "2010-08-18 revision 29036"
full_version: "ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]"
我很好奇是否有其他人正在使用这种语法?
答案 0 :(得分:1)
我拿到1.9.2的头并重新编译,下面是我的设置:
ruby:
interpreter: "ruby"
version: "1.9.2p94"
date: "2010-12-08"
platform: "x86_64-darwin10.5.0"
patchlevel: "2010-12-08 revision 30140"
full_version: "ruby 1.9.2p94 (2010-12-08 revision 30140) [x86_64-darwin10.5.0]"
显然它是在@Beerlington编译的时候修复的,似乎固定在ruby边缘。
ruby-1.9.2-head :001 > [ *'2'..'10', *%w{ J Q K A } ]
=> ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]