AFAIK,Iterator.map
是懒惰而Vector.map
渴望,主要是因为它们是不同类型的单子。
我想知道是否有任何机会让 aEagerTry
和LazyTry
它的行为就像currentTry
一样,但是后者 ( LazyTry
) 延迟了闭包的执行,直到需要结果(如果需要)。
请注意,lazy
在 Scala 中将内容声明为不太适用,特别是它适用于给定范围。传递参数时存在另一种选择(按名称传递参数)。问题是如何在将(惰性)值返回到外部范围时实现惰性行为。Option
基本上是长度为 0 或 1 的集合,这将是惰性集合 ( Iterator
, Sequence
) 的等效情况,但长度限制为 0 或 1 (如Option
and Either
)。我特别感兴趣Try
,即LazyTry
完全按照Try
将要使用的方式使用。我想这在其他情况下应该是类似的(Option
和Either
)。
请注意,我们已经有了EagerTry
,因为当前的标准Try
是急切的。不幸的是,这个类是密封的,因此,要拥有同一个类的渴望和惰性版本,我们需要定义它们中的三个并实现它们中的两个(而不是定义和实现一个)。重点是返回 aTry
而没有其他软件层担心该代码的执行时间,即抽象。