2010-12-13 2 views
0

nach dem neuesten Artikel von Dave Thomas in dem pragpub Magazin http://pragprog.com/magazines Ruby 1.9 sollte mehrere Splat Argumente in Array-Literale akzeptieren, zB:splats in Array-Literale

[ *'2'..'10', *%w{ J Q K A } ] 

Aber auf meinem Rechner Ich bin ein immer Parsing-Fehler. Unter 1.9.1p378 bekomme ich nur das letzte zurückgegebene Array-Literal und unter 1.9.2p0 erhalte ich einen Parse-Fehler beim Lesen des Kommas zwischen den Literalen.

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 ']' 

Update: meine rubin Einstellungen:

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

Ich bin gespannt, ob jemand anderes bekommt diese Syntax zu arbeiten?

+0

Kannst du eine 'Range' splittern, ohne sie in' Array' umzuwandeln? edit: entpuppt sich selbst in 1.8. Verdammt cool! –

+1

WorksForMePerfectly mit 1.9.2p0 (Win 7 x64) – Ernest

+0

Auch funktionierte in 1.9.1p243 – Phrogz

Antwort

1

Ich holte Kopf für 1.9.2 und neu kompiliert, sind unter meine Einstellungen:

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

so offenbar wurde es von der Zeit festgelegt @Beerlington zusammengestellt und auf Rubin Kante fixiert zu sein scheint.

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"] 
+1

1.9.2 soll alle Installationen von 1.9.1 ersetzen, da es die erste "production ready" Version ist. – tadman

+0

yah, das komische Ding ist, dass ich 1.9.2p0 benutzte und es nicht funktionierte, aber ich denke, dass es vielleicht eine Inkompatibilität in der letzten os x Aktualisierung gegeben hat, die durch Neukompilieren von Ruby nach dem Update behoben wurde. Ich weiß nicht, es ist die beste Schätzung, die ich aufbringen kann. –

+0

Wenn Sie 1.9.2-p0 installiert und dann Snow Leopard installiert haben, müssten Sie Ruby neu kompilieren. Leopard war 32-Bit und Snow Leopard ist 64-Bit. Sie müssen auch alle Ihre Edelsteine ​​mit nativem Code neu kompilieren, da sie jetzt verärgert sind. Ich denke, "mak pristine - all" wird es tun. –