1

のように機能する(部分関数を使用する)Optionクラスにメソッドがありますが、戻り値の型はありますか?collectUnit

つまりmapcollectそのままforeachです?

申し訳ありませんが、私は Scala を初めて使用しOptionます。ドキュメントを調べて少し調べましたが、関連するものは見つかりませんでした。

を使用できることはわかっていますmatchが、もっと簡単な解決策があるかどうか疑問に思っていました。

4

2 に答える 2

3

collect関数が a を返す場合にのみ使用Unitし、そうでない場合はそれを保持しないでください。

myOpt collect { 
  case x: Foo =>
}

リターンを破棄しても害はありません。

于 2014-11-13T15:42:17.337 に答える
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") }
于 2014-11-13T15:52:26.140 に答える