为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),因此错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |