【发布时间】:2013-09-03 02:57:12
【问题描述】:
此代码将一个函数应用于 Ints 列表,并将选项列表中的每个值设置为 4:
val l = List(1,2,3,4,5) //> l : List[Int] =
val v = 4 //> v : Int = 4
def g(v:Int) = List(v-1, v, v+1) //> g: (v: Int)List[Int]
l map (x => {f(x);}) //> res0: List[Option[Int]] = List(Some(4), Some(4), Some(4), Some(4), Some(4))
地图签名:
def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That = {
既然 B 是第一个类型参数(在 map[B, That] 中),这是否意味着它的类型为前缀操作数 'l' (List)?
'A' 是如何输入的? scala 编译器是否以某种方式检查 List 'l' 中的类型并推断其类型为 Int ?
“那个”是怎么打的?
【问题讨论】:
-
Scala 2.8 breakout 的可能重复项
-
在你的代码中,函数f是什么?函数g有什么用?如果您查看 List 的 API 文档,您会发现 map 具有以下签名: def map[B](f: (A) ⇒ B): List[B] :它只是将 A 的列表转换为列表B
-
参见this answerDaniel C. Sobral中的关于'CanBuildFrom`部分。
标签: scala