2012-01-22 144 views
1

意外分號我剛開始學習Ruby。我輸入的example紅寶石:在塊參數

x = 10 
5.times do |y; x| 
    x = y 
    puts "x inside the block: #{x}" 
end 
puts "x outside the block: #{x}" 

而且我有一個錯誤:

hello.rb:3: syntax error, unexpected ';', expecting '|' 5.times do |y; x|

向我解釋,請這是什麼意思?這個代碼應該可以工作,因爲我理解這一章。

回答

7

這是一個new 1.9 construct,你使用1.8。


它還適用於lambda表達式(包括刺傷),這是很好的:

> x = 42 
> love_me = ->(y; x) do 
* x = y 
* puts "x inside the block: #{x}" 
* end 
> 2.times &love_me 
x inside the block: 0 
x inside the block: 1 
> puts "x outside the block: #{x}" 
x outside the block: 42 
+0

但在本教程中說:爲塊局部變量的語法很簡單。在正常的塊參數列表後加一個分號,然後列出你想要的變量作爲塊局部變量。 是不應該的作品? – I159

+0

@ I159大。我的問題/陳述仍然存在 - 這在Ruby 1.8中不可用。你在運行什麼版本的Ruby? –

+0

@ I159:實際上,在這個特定的例子之上,有這樣的文字段落:「在Ruby 1.9中,塊僅爲塊參數引入它們自己的作用域,如下例所示:」 – Frost