最后一个元组周围的括号真的需要吗?没有它们就无法编译,编译器尝试仅添加 Sort("time") 并提示它需要一个元组。
val maxSortCounts: Map[Sort, Int] =
sorts.map(s => s -> usedPredicates.map(pred => pred.signature.count(_ == s)).max)
.toMap + ((Sort("time"), 1))
我试图用一个更简短的例子在 REPL 中重现这种行为,但它的行为符合预期。变量
sorts
是 Seq[Sort]
.error: type mismatch;
found : <snip>.Sort
required: (<snip>.Sort, Int)
.toMap + (Sort("time"), 1)
最佳答案
是的,它们是必需的。否则编译器会将代码解释为x.+(y, z)
而不是 x.+((y, z))
.
相反,您可以再次使用 ArrowAssoc:x + (y -> z)
.注意,括号也是需要的,因为 +
和 -
具有相同的优先级(只有方法的第一个符号定义了它的优先级)。
关于Scala:为什么我必须在这里加上额外的括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993879/