如何解决第二次循环序列时为空序列
在节中,我想在一个序列上循环两次。
我有类似的东西:
public defn function1-and-function2 (s:Seqable<Double>) -> [Double,Double]:
[function1(s),function2(s)]
与
public defn function1 (s:Seqable<Double>) -> Double
和
public defn function2 (s:Seqable<Shape>) -> Double
在 function1
和 function2
中,我都在循环序列。但是当到达 function2
时,序列是空的。
解决方法
Seqable
是一个惰性计算的值序列,一般来说,您只能遍历它一次。
因此,一般的解决方案是首先存储所有值(例如在元组中),然后您可以将此元组传递给您的每个函数:
val t = to-tuple(s)
[function1(t),function2(t)]
但是,对于您的特定情况,很明显 function1
和 function2
可以相互独立计算。所以可以遍历序列一次,然后同时计算function1
和function2
的结果。 core
中有一个名为 fork-on-seq
的奇特函数可以让您执行此操作:
fork-on-seq(s,function1,function2)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。