有誰能夠解釋爲什麼下面的代碼有錯誤塊定義 - 大括號和do-end之間的區別?
irb(main):186:0> print ((1..10).collect do |x| x**2 end)
SyntaxError: (irb):186: syntax error, unexpected keyword_do_block,
expecting ')'
print ((1..10).collect do |x| x**2 end)
^
(irb):186: syntax error, unexpected keyword_end, expecting $end
print ((1..10).collect do |x| x**2 end)
^
from /usr/bin/irb:12:in `<main>'
,而在與相同的功能代碼的作品如預期終止?
irb(main):187:0> print ((1..10).collect { |x| x**2 })
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]=> nil
我也相信大括號「{}」可以代替「做終端」隨意在塊 定義。
我知道我可以省略打印 方法和第一個括號之間的空間「修復」第一個電話,但我一個解釋 很感興趣,爲什麼它的行爲不同。
另請參見[類似問題的前提](http://stackoverflow.com/questions/2122380/using-do-block-vs-brackets)。 – Zabba 2011-05-30 18:20:14
這是[Ruby Block Syntax Error](http://StackOverflow.Com/q/6854283/)的副本,[傳遞給'each'的代碼塊與括號一起使用,但不與'do'-'end'一起使用(ruby )](http://StackOverflow.Com/q/6718340/),[沒有'do''end的Ruby多行塊]](http://StackOverflow.Com/q/3680097/),[使用'do'塊vs括號'{}'](http://StackOverflow.Com/q/2122380/),[Ruby中這些塊編碼風格的區別或價值是什麼?](http://StackOverflow.Com/q/533008 /)和[Ruby塊和非自私參數](http://StackOverflow.Com/q/420147/)。 – 2011-07-28 08:17:09
@coreyward:Y U回滾? – 2011-09-21 00:00:29