Sen*_*nua 4 generics scala higher-order-functions
我是Scala的新手和一般的编程..我有Scala地图功能的麻烦..
映射函数的简单签名是:DEF映射[B](F:(A)⇒B):列表[B]
所以我猜地图[B]的B是通用的,我可以显式设置结果的类型吗?
如果我尝试运行代码:
val donuts1: Seq[Int] = Seq(1,2,3)
val donuts2: List[Int] = {
donuts1.map[Int](_ => 1)
}
Run Code Online (Sandbox Code Playgroud)
我收到错误消息"int类型的表达式不符合exxted类型B"
我不明白这里的问题..有人能解释一下这个问题吗?
谢谢!
map()您问题中引用的签名是完整签名的简化/缩写版本.
final def map[B, That](f: (A) ? B)(implicit bf: CanBuildFrom[List[A], B, That]): That
Run Code Online (Sandbox Code Playgroud)
因此,如果要指定类型参数(几乎不需要),则必须同时指定两者.
val donuts1: List[Int] = List(1,2,3)
val donuts2: List[Int] = donuts1.map[Int,List[Int]](_ => 1)
//donuts2: List[Int] = List(1, 1, 1)
Run Code Online (Sandbox Code Playgroud)
我可以明确设置结果的类型?
并不是的.type参数必须与f函数/ lambda返回的内容一致.如果你指定了type参数,那么你(通常)只是要求编译器确认结果类型实际上是你认为它应该是什么.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |