如何解决在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 举报,一经查实,本站将立刻删除。