我想用函数式的方式来编写它,我能做的最好的就是:
list.zipWithIndex.filter((tt:Tuple2[Thing,Int])=>(tt._2%3==0)).unzip._1
获取元素 0, 3, 6,...
有没有更易读的 Scala 习惯用法?
如果效率不是问题,您可以执行以下操作:
list.grouped(3).map(_.head)
请注意,这会构造中间列表。
或者,您可以使用 for 理解:
for {
(x,i) <- list zipWithIndex
if i % 3 == 0
} yield x
这当然与您原来的解决方案几乎相同,只是写法不同。
我为您提供的最后一个选择是在压缩列表上使用收集:
list.zipWithIndex.collect {
case (x,i) if i % 3 == 0 => x
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)