选项方法如`collect`返回Unit?

时间:2014-11-13 15:33:09

标签: scala scala-option

Option类上的方法是否与collect类似(它需要部分函数),但返回类型为Unit

即:mapcollectforeach?

抱歉,我是Scala的新手 - 我查看了Option文档并进行了一些研究,但没有发现任何相关内容。

我知道我可以使用match,我只是想知道是否有更简单的解决方案。

2 个答案:

答案 0 :(得分:3)

如果您的函数返回collect,只需使用Unit,如果它没有,请不要坚持使用。

myOpt collect { 
  case x: Foo =>
}
如果你放弃回报,没有伤害,没有家禽。

答案 1 :(得分:1)

Option没有这样的方法,让scala只丢弃collect的返回值,但如果确实需要不同的方法名称,您可以使用隐式转换来丰富Option

implicit class OptionExt[A](opt: Option[A]) {
    def forCollect(pf: PartialFunction[A, Unit]): Unit = opt.collect(pf)
}

(我不知道你真正称之为这个功能。)

scala> Option[Any](1).forCollect { case i: Int => println("I'm an Int") }
I'm an Int

scala> Option[Any]("1").forCollect { case i: Int => println("I'm an Int") }

scala> Option[Any](None).forCollect { case i: Int => println("I'm an Int") }