对于以下map
签名,我是否正确阅读?
object OptionImpl extends Option {
def map[B](f: A => B): Option[B]
}
来源 - FP in Scala
[B]
表示只有B
类型的对象才能调用此函数
f: A => B
表示它接受1个参数,一个返回相同类型的函数B
我对这个功能的一个具体例子很模糊。
答案 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。