0

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

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

源代码 - Scala 中的 FP

[B]意味着只有类型的对象B可以调用这个函数

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

我对这个函数的一个具体例子很模糊。

4

2 回答 2

4

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

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

也就是说,它说:如果你给我一个将As 转换为Bs 的函数,我会给你一个Option可能包含 a的函数B(其中B可以是任何类型)。

于 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 返回一个选项。

于 2013-08-28T01:54:24.157 回答