一般的问题是除了计算的实际结果之外,如何从方法中返回额外的信息。但我希望,可以默默地忽略这些信息。
以方法dropWhile
为例在 Iterator
.返回的结果是变异的迭代器。但也许有时我可能对丢弃的元素数量感兴趣。
在dropWhile
的情况下,可以通过向迭代器添加索引并随后计算丢弃的步骤数来在外部生成此信息。但一般来说这是不可能的。
我的简单解决方案是返回一个包含实际结果和可选信息的元组。但是,每当我调用该方法时,我都需要处理元组 - 即使我对可选信息不感兴趣。
所以问题是,是否有一些巧妙的方法来收集这些可选信息?
也许通过 Option[X => Unit]
带回调函数的参数默认为 None
?还有更聪明的吗?
最佳答案
这里只有我的两分钱……
你可以这样声明:
case class RichResult[+A, +B](val result: A, val info: B)
隐式转换为
A
:implicit def unwrapRichResult[A, B](richResult: RichResult[A, B]): A = richResult.result
然后:
def someMethod: RichResult[Int, String] = /* ... */
val richRes = someMethod
val res: Int = someMethod
关于scala - 如何从方法返回可选信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6467276/