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

为Scala地图添加值

发布时间:2020-12-16 08:56:39 所属栏目:安全 来源:网络整理
导读:为什么这样做: val x = Map[Int,Int]()val y = (1,0)x + y 但不是吗? val x = Map[Int,Int]()x + (1,0) 产生的错误是: console:11: error: type mismatch;found : Int(1)required: (Int,?) x + (1,0) ^ 如果我要输入(1,0)到REPL中,它会正确地将其键入(Int
为什么这样做:

val x = Map[Int,Int]()
val y = (1,0)
x + y

但不是吗?

val x = Map[Int,Int]()
x + (1,0)

产生的错误是:

<console>:11: error: type mismatch;
found   : Int(1)
required: (Int,?)
          x + (1,0)
               ^

如果我要输入(1,0)到REPL中,它会正确地将其键入(Int,Int).

我应该补充说这很好用:

x + (1 -> 0)

解决方法

这是由元组符号与参数列表之间的相似性引起的模糊性:

x(1,0)是x的表示法. (1,0)但遗憾的是,x上没有采用两个Int参数的方法.你想要的是x. ((1,0)),即x((1,0)).

Scala中有一些叫做auto-tupling的东西,参见this question and answers,它将println(1,2)重写为println((1,2)).除非这个在这里不起作用,因为该方法采用可变数量的参数而不是像println那样的单个参数.

你得到那个奇怪的错误信息,因为它期望参数列表(1,0)中的每个值都是一个元组,如myMap((1,2),(1,3),(3,4)).它找到一个Int而不是(Int,Int),因此错误.

(编辑:李大同)

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

    推荐文章
      热点阅读