迭代n到Ruby可枚举的最后一项

And*_*rew 2 ruby

我试图找到最简洁的方法为数组中的第一项做一些特殊的事情,然后为所有其他事情做一些不同的事情.到目前为止,我有这样的事情:

puts @model.children.first.full_name
@model.children[1..@model.children.count].each do |child|
  puts child.short_name
end
Run Code Online (Sandbox Code Playgroud)

我不喜欢如何指定范围内的计数.我想找一个更短的方法来指定"从第二项到最后一项".如何才能做到这一点?

Mar*_*lez 10

Ruby使用splat操作符有一种很酷的方法*.这是一个例子:

a = [1,2,3,4]
first, *rest = *a
puts first # 1
puts rest # [2,3,4]
puts a # [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

这是你的代码重写:

first, *rest = @model.children
puts first.full_name
rest.each do |child|
  puts child.short_name
end
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!


Aru*_*hit 6

你可以采取这种方法:

@model.children[1..-1].each do |child|
  puts child.short_name
end
Run Code Online (Sandbox Code Playgroud)