为什么这样做:
val x = Map[Int,Int]()
val y = (1, 0)
x + y
Run Code Online (Sandbox Code Playgroud)
但不是吗?
val x = Map[Int,Int]()
x + (1, 0)
Run Code Online (Sandbox Code Playgroud)
产生的错误是:
<console>:11: error: type mismatch;
found : Int(1)
required: (Int, ?)
x + (1,0)
^
Run Code Online (Sandbox Code Playgroud)
如果我要进入(1,0)REPL,它会正确输入(Int,Int).
我应该补充说这很好用:
x + (1 -> 0)
Run Code Online (Sandbox Code Playgroud)
这是由元组符号与参数列表之间的相似性引起的模糊性:
x + (1,0)是符号,x.+(1,0)但遗憾的是没有方法x需要两个Int参数.你想要的是x.+((1,0)),即x + ((1,0)).
也有一些是在斯卡拉称为自动几倍,看到这个问题和答案,这改写,例如,println (1,2)对println((1,2)).除非这在这里不起作用,因为该+方法采用可变数量的参数而不是单个参数println.
你得到那个奇怪的错误信息,因为它希望参数列表中的每个值(1,0)都是一个元组,如myMap + ((1,2), (1,3), (3,4)).它找到一个Int而不是一个(Int, Int),因此错误.
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |