scala - 如何从方法返回可选信息?

标签 scala

一般的问题是除了计算的实际结果之外,如何从方法中返回额外的信息。但我希望,可以默默地忽略这些信息。

以方法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/

相关文章:

Scala代码揭开神秘面纱

scala - 如何访问定义位置之外的对象中的累加器?

scala - Play Controller 中的可变状态、Actor 的线程安全?

scala - 在函数文字中省略下划线?

scala - object User extends Magic[User]().using ("users") 无法编译

scala - 这是一种什么样的Scala语法呢?

Scala:采用两个参数列表的函数对象的类型是什么?

java - scala 和 java 中的枚举器与迭代器

scala - 检查 Scala 中两个 Spark DataFrame 的相等性

scala - 是否可以将 word2vec 预训练的可用向量加载到 Spark 中?