2014-03-06 61 views
-1

的每一个元素,我知道我可以使用红宝石做多的事情数组

my_array = [1,2,3,4,5] 
my_array.each {|element| puts element} 

做一些与阵列中的每个元素,但如果我需要做几件事情,每个元素是什么?当我尝试在块中放置多个语句时,它开始抱怨。我所真正需要的是更多的东西是这样的:

my_array = [1,2,3,4,5] 
my_array.each |element| do 
    #operation one involving the element 
    #operation two involving the element 
    ... 
end 

有没有达到这样的效果没有什么好的办法?

+2

谁抱怨?您*可以*在块中执行多个操作。你看到什么错误?你有一个更具体的代码示例,显示产生错误的是什么? –

+1

第二块应该工作得非常好,如果你在'每个'之后立即移动'do' –

回答

0

如果你真的想要将它塞入一个班轮,你可以使用分号。

x = [1,2,3,4,5] 
x.map{|y| y*=2; y-=5; y} 

这给了你: => [-3,-1,1,3,5]

它变得很丑陋相当快的,所以使用multiliners除非有你想有一个很好的理由它在一条线上。

1

你可以把尽可能多的语句,只要你喜欢的块里面,但你需要获得DO /结束语法正确。

的顺序do |elemenet|,不|element| dodo/end关键字取代{}

my_array.each do |element| 
    puts "element is #{element}" 
    element += 1 
    puts "Now element is #{element}" 
    # etc... 
end 
+0

我的不好,我真的认为这是相反的方式。我只是在学习Ruby ... – user3380049