我知道我可以使用
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
有没有什么好方法可以达到这个效果?
答案 0 :(得分:1)
你可以在一个块中放入任意数量的语句,但是你需要正确地使用do / end语法。
订单为do |elemenet|
,而不是|element| do
。 do
/ end
个关键字会替换{}
。
my_array.each do |element|
puts "element is #{element}"
element += 1
puts "Now element is #{element}"
# etc...
end
答案 1 :(得分:0)
如果确实希望将其塞入单行内容,则可以使用分号。
x = [1,2,3,4,5]
x.map{|y| y*=2; y-=5; y}
这会给你: => [-3,-1,1,3,5]
虽然很快就变得非常难看,所以使用多线游戏,除非你有一个很好的理由想要它在一条线上。