【发布时间】:2015-07-15 23:08:22
【问题描述】:
我有一个函数,它返回一个对源自套接字的无限流执行操作。
def f1(s:Stream[T]):Stream[T] = s map {...} filter {...}
我有另一个方法可以返回一个有限序列,我想加入这个流。
def f2():Stream[T] = ...
这就是我要找的东西:
val a = f2#:::f1(s)
问题是,f2 需要一些时间来计算,而f1 需要尽快输出值。我想将f2 包装在Runnable 中,这样我就可以在不阻塞程序其余部分的情况下计算它的值。
我希望 a 的行为如下:如果 f2 已完成计算,请将其添加到 f1 并继续输出该流的值。否则,继续输出f1 的值。我应该如何进行?
【问题讨论】:
-
如果
f2没有计算完,我们继续输出f1的值,然后f2完成计算会怎样? -
完成后添加到 f1 -- 所以 steam 的定义是
f2 while any f2 else f1
标签: scala asynchronous stream