加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala映射显式类型

发布时间:2020-12-16 18:10:10 所属栏目:安全 来源:网络整理
导读:我是 Scala的新手和一般的编程..我有Scala地图功能的麻烦.. map函数的简单签名是:def map [B](f:(A)?B):List [B] 所以我猜地图[B]的B是通用的,我可以显式设置结果的类型吗? 如果我尝试运行代码: val donuts1: Seq[Int] = Seq(1,2,3) val donuts2: List[
我是 Scala的新手和一般的编程..我有Scala地图功能的麻烦..

map函数的简单签名是:def map [B](f:(A)?B):List [B]

所以我猜地图[B]的B是通用的,我可以显式设置结果的类型吗?

如果我尝试运行代码:

val donuts1: Seq[Int] = Seq(1,2,3)
 val donuts2: List[Int] = {
    donuts1.map[Int](_ => 1)
  }

我收到错误消息“int类型的表达式不符合exxted类型B”

我不明白这里的问题..有人能解释一下这个问题吗?

谢谢!

解决方法

您问题中引用的map()签名是完整签名的简化/缩写版本.

final def map[B,That](f: (A) ? B)(implicit bf: CanBuildFrom[List[A],B,That]): That

因此,如果要指定类型参数(几乎不需要),则必须同时指定两者.

val donuts1: List[Int] = List(1,3)
val donuts2: List[Int] = donuts1.map[Int,List[Int]](_ => 1)
//donuts2: List[Int] = List(1,1,1)

and i can explicit set the type of the result?

并不是的. type参数必须与f function / lambda返回的内容一致.如果你指定了type参数,那么你(通常)只是要求编译器确认结果类型实际上是你认为它应该是什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读