2011-04-12 163 views
1

我是計算機科學專業,我們剛剛學習Ruby。我對這個我們應該解決的問題非常遺憾,主要是語法問題。以下是我們要做的:Ruby:方法幫助

編寫一個方法,該方法接受一串字符串和一個塊並在每個字符串上調用該塊。回想一下,調用塊的關鍵字是yield。該呼叫的語法如下:

method(["blah", "Blah"]) {...} 

測試通過將其用於打印施加相反每一串的結果的塊的方法。通話結束後打印出原始數組。 通過傳遞一個調用反向的塊來再次測試它!打印出原始數組。觀察差異,在評論中解釋它們。

我不知道如何解決這個問題。我特別新來阻止和收益。

+0

這是我第一年....給我一個休息。 – user487743 2011-04-12 01:46:08

+0

不要忘記遵循明尼蘇達大學的學校誠實政策,從[here](http://cda.morris.umn.edu/~elenam/4651_fall08/#policies)鏈接。 – 2011-04-12 05:56:05

回答

3
def my_method(array, &block) 
    array.each{|a| yield a} 
end 

array = ["one", "two", "three"] 
my_method(array) do |a| 
    puts a.reverse 
end 
#=> eno 
#=> owt 
#=> eerht 
array 
#=> ["one", "two", "three"] 
my_method(array) do |a| 
    puts a.reverse! 
end 
#=> eno 
#=> owt 
#=> eerht 
array 
#=> ["eno", "owt", "eerht"] 
+0

謝謝!我想我明白髮生了什麼事情。 – user487743 2011-04-12 01:35:26

+0

使用'do..end'和'{}'大括號有一些區別。檢查出http://stackoverflow.com/questions/5587264/do-end-vs-curly-braces-for-blocks-in-ruby和SO上的相關帖子。這將是有用的 – fl00r 2011-04-12 12:45:44