数组文字中的splats

时间:2010-12-13 18:14:56

标签: ruby-on-rails ruby ruby-1.9

根据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]"

我很好奇是否有其他人正在使用这种语法?

1 个答案:

答案 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"]