2011-04-12 92 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