Option
类上的方法是否与collect
类似(它需要部分函数),但返回类型为Unit
?
即:map
为collect
,foreach
为?
。
抱歉,我是Scala的新手 - 我查看了Option
文档并进行了一些研究,但没有发现任何相关内容。
我知道我可以使用match
,我只是想知道是否有更简单的解决方案。
答案 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") }