了解期权方法

时间:2013-08-28 01:00:30

标签: scala scala-option

对于以下map签名,我是否正确阅读?

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

来源 - FP in Scala

[B]表示只有B类型的对象才能调用此函数

f: A => B表示它接受1个参数,一个返回相同类型的函数B

我对这个功能的一个具体例子很模糊。

2 个答案:

答案 0 :(得分:4)

B只是一个通配符(即通用)。它只是说这两种类型是相同的:

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

也就是说,如果你传给我一个将A转换为B的函数,我会给你一个可能包含Option的{​​{1}} }(其中B可以是任何类型)。

答案 1 :(得分:2)

对于Option的使用,这是一个非常有用的链接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。