【发布时间】:2018-07-23 08:47:46
【问题描述】:
所以我有这个(排序良好的)数组。
有时我需要数组中的所有元素。但有时我需要将所有偶数索引成员和所有奇数索引成员放在一起。再说一次,有时我需要将它分成三组,一组中的索引为 0,3,6 等,下一组为 1,4,7,最后一组为 2,5,8。
这可以使用group_by 并获取索引的模数来完成。自己看:
https://play.crystal-lang.org/#/r/4kzj
arr = ['a', 'b', 'c', 'd', 'e']
puts arr.group_by { |x| arr.index(x).not_nil! % 1 } # {0 => ['a', 'b', 'c', 'd', 'e']}
puts arr.group_by { |x| arr.index(x).not_nil! % 2 } # {0 => ['a', 'c', 'e'], 1 => ['b', 'd']}
puts arr.group_by { |x| arr.index(x).not_nil! % 3 } # {0 => ['a', 'd'], 1 => ['b', 'e'], 2 => ['c']}
但其中的not_nil! 感觉就像是代码异味/警告说有更好的方法。
可以不用查找和处理Nil类型就得到元素的索引吗?
【问题讨论】:
标签: crystal-lang