仅出于测试目的,我想懒惰地计算 2 个元素:
Stream(
{ Thread.sleep(2000); 1 },
{ Thread.sleep(2000); 2 },
Stream.empty[Int]
).foreach(println)
但是运行此代码不会产生预期的结果。这些值似乎同时出现在输出中。原因是Stream()
构造函数采用了一个必须急切计算的数组。所以要解决这个问题,我不得不像这样手动创建流的 thunk:
(
{ Thread.sleep(2000); 1 } #::
{ Thread.sleep(2000); 2 } #::
Stream.empty[Int]
).foreach(println)
现在完全按照预期工作,但不是特别漂亮。
有没有一种更简洁、更方便的方法来让语法上类似于Stream(a, b, c)
但懒惰地评估参数?
谢谢