微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Ruby中循环遍历数组的更好语法

如何解决在Ruby中循环遍历数组的更好语法

我有一个A,它是一个长度为3的数组。例如A = [[a1,b1,c3],[a2,b2,c2],[a3,b3,c3],[a4,b4,c4 ]]。现在我正在像这样遍历它:

A.each do |elem|
  puts(elem[0].foo)
  puts(elem[1].bar)
  puts(elem[2].baz)
end

由于我在循环中使用了许多不同的属性,因此代码变得非常混乱且不可读。另外,本地名称elem [0]并不是很描述。有没有办法使用这样的东西?

A.each do |[a,b,c]|
  puts(a.foo)
  puts(b.bar)
  puts(c.baz)
end

我对红宝石很陌生,我真的不知道在哪里可以找到这样的东西。

解决方法

这称为解构(或在Ruby docs中分解):

A.each do |(a,b,c)|
  puts(a.foo)
  puts(b.bar)
  puts(c.baz)
end

如果元素数量未知,也可以使用splat(*),它将收集剩余的元素:

[[1,2,3,4],[5,6,7,8]].each do |(first,*rest)|
  puts "first: #{first}"
  puts "rest: #{rest}"
end


[[1,*middle,last)|
  puts "first: #{first}"
  puts "middle: #{middle}"
  puts "last: #{last}"
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。