Scala 像'collect'这样返回单位的选项方法?

Scala 像'collect'这样返回单位的选项方法?,scala,scala-option,Scala,Scala Option,Option类上是否有一个类似collect的方法,它接受一个分部函数,但返回类型为Unit 也就是说:地图要收集,就像foreach要收集一样 对不起,我是Scala的新手,我查阅了选项文档并做了一些研究,但没有发现任何相关内容 我知道我可以使用match,我只是想知道是否有更简单的解决方案。如果函数返回一个单位,就使用collect,如果没有,就不要保留它 myOpt collect { case x: Foo => } 如果放弃返回,则没有伤害,没有损失。如果函数返回一个单位

Option类上是否有一个类似collect的方法,它接受一个分部函数,但返回类型为Unit

也就是说:地图要收集,就像foreach要收集一样

对不起,我是Scala的新手,我查阅了选项文档并做了一些研究,但没有发现任何相关内容

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

如果函数返回一个单位,就使用collect,如果没有,就不要保留它

myOpt collect { 
  case x: Foo =>
}
如果放弃返回,则没有伤害,没有损失。

如果函数返回一个单位,则使用collect,如果函数没有返回,则不要保留它

myOpt collect { 
  case x: Foo =>
}

丢弃返回值没有坏处,也没有问题。

选项没有这样的方法,让scala从collect中丢弃返回值也没关系,但如果您确实需要不同的方法名,可以使用隐式转换来丰富选项

我不知道这个函数到底叫什么

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") }

Option没有这样的方法,让scala放弃collect的返回值也没关系,但如果您真的需要不同的方法名,可以使用隐式转换来丰富Option

我不知道这个函数到底叫什么

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") }

你的主要用例是什么?@GabrielePetronella,我需要键入cast值到任意字符串,然后有条件地使用该值为Java类创建副作用。你的主要用例是什么?@GabrielePetronella,我需要键入cast值到任意字符串,然后有条件地使用该值为Java类创建副作用。好的,谢谢,这似乎很公平。快速提问:在这种情况下,当地图可用时,为什么选项需要一个foreach?@kardeiz-foreach明确表示您正在执行一个副作用函数,而地图没有。好的,谢谢,这看起来很公平。快速提问:在这种情况下,为什么选项需要有一个foreach,当有map可用时?@kardeiz-foreach清楚地表明您正在执行一个副作用函数,而map没有。