2017-03-17 9 views
0

私は、コードを次ていますgetOrElse使用状況やドットなし関数合成を理解

sealed trait Option[+A] { 

    def map[B](f: A => B): Option[B] = this match { 
    case None => None 
    case Some(a) => Some(f(a)) 
    } 

    def getOrElse[B>:A](default: => B): B = this match { 
    case None => default 
    case Some(a) => a 
    } 

    def flatMap[B](f: A => Option[B]): Option[B] = 
    map(f) getOrElse None 
} 
case class Some[+A](get: A) extends Option[A] 
case object None extends Option[Nothing] 

flatMap関数の本体、それが動作んか?それは関数の構成ではありません。どのような機能を呼びますか?

getOrElseの使用方法は?

答えて

4

map(f) getOrElse Noneは単に入力fmap()関数を呼び出し、次にNoneの場合マップ戻るにSome(x)又はNoneの値xを返した結果、上getOrElseを呼び出す式map(f).getOrElse(None)と等価です。

Some(5).getOrElse(0)は5 None.getOrElse(0)は0

+0

を返します返します 'マップ(F)'ので、私は、メソッドチェーンを行うことができ、オブジェクトのオプションを返すのですか? –

+0

はい、getOrElseはOptionで定義されています。 –

関連する問題