0

次のmap署名について、正しく読んでいますか?

   object OptionImpl extends Option {
        def map[B](f: A => B): Option[B]
    }

source - Scala の FP

[B]タイプのオブジェクトのみBがこの関数を呼び出すことができることを意味します

f: A => B同じ型を返す1つの引数、関数を受け入れることを意味しますB

この関数の具体的な例については、あいまいです。

4

2 に答える 2

4

B単なるワイルドカード (つまりジェネリック) です。これら2つのタイプが同じであると言っているだけです:

def map[B](f: A => B): Option[B]
                   ^          ^

つまり、As をs に変換する関数を渡すと、aを含む可能性Bのある an が返されます(任意の型である可能性があります)。OptionBB

于 2013-08-28T01:06:49.173 に答える
2

これは、オプションの使用に関する非常に便利なリンクhttp://blog.tmorris.net/posts/scalaoption-cheat-sheet/です。

こんなシチュエーションなら

 option match {
   case None => None
   case Some(x) => Some(foo(x))
 }

使用する

option.map(foo(_))

もう一つの例

def processBody(contentType: String): String = {
 .....
}

val body: Option[String] = 
   headers.get("Content-Type").map(processBody(_))

ここでは、headers.get が Option を返すと仮定しました。

于 2013-08-28T01:54:24.157 に答える