【发布时间】:2021-06-17 06:15:14
【问题描述】:
我有一个二维列表ll : List[List[T]] 和一个函数f : T => Boolean。我想找到一个整数元组(i, j),这样f(l(i)(j)) == true 只要它存在,就可能包裹在Option 中,并且想以函数式编程的方式来做这件事。我目前的工作解决方案如下:
ll.zipWithIndex
.flatMap{case (l, i) => l.map((_, i)).zipWithIndex}
.find{case ((l, _), j) => f(l(j))}
.map{case ((_, i), j) => (i, j)}
但是,我觉得应该有更好的方法来实现这一点 - 我的解决方案非常麻烦,并且不能很好地推广到高维数组。那么有没有更好的方法来做到这一点?
在我走之前:我完全知道这很容易通过嵌套的 for 循环实现。所以我只对函数式编程风格的解决方案感兴趣。
【问题讨论】:
-
for理解只是map()和flatMap()调用的语法糖。那有什么非 FP 呢?
标签: arrays scala multidimensional-array indexing find