如何在Ruby循环中的第一次迭代中执行不同的操作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我总是用一个计数器来检查i==0循环中的第一个项目():

i = 0
my_array.each do |item|
  if i==0
    # do something with the first item
  end
  # common stuff
  i += 1
end

有没有更好的方式来做到这一点(也许是一个method)?

提问于
用户回答回答于

你可以这样做:

my_array.each_with_index do |item, index|
    if index == 0
        # do something with the first item
    end
    # common stuff
end

试试ideone

用户回答回答于

使用each_with_index,正如其他人所描述的,将做工精细,但对于不同的缘故这里是另一种方法。

如果想为第一个元素做一些特定的事情,并且为所有元素(包括第一个元素)做一些通用的事情,可以这样做:

# do something with my_array[0] or my_array.first
my_array.each do |e| 
  # do the same general thing to all elements 
end

但是如果你不想用第一个元素来做事情:

# do something with my_array[0] or my_array.first
my_array.drop(1).each do |e| 
  # do the same general thing to all elements except the first 
end

扫码关注云+社区