Scala:为什么我必须在这里添加额外的括号?

发布于 2024-11-07 01:59:24 字数 489 浏览 0 评论 0原文

最终元组周围的括号真的需要吗?如果没有它们,它就无法编译,并且编译器尝试仅添加 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)

Are the parenthesis around the final tuple really needed? It doesn't compile without them and the compiler tries to add only the Sort("time") and complains that it expects a tuple instead.

val maxSortCounts: Map[Sort, Int] =
  sorts.map(s => s -> usedPredicates.map(pred => pred.signature.count(_ == s)).max)
    .toMap + ((Sort("time"), 1))

I've tried to reproduce this behaviour inside the REPL with a shorter example, but there it behaves as intended. The variable sorts is a Seq[Sort].

error: type mismatch;
found   : <snip>.Sort
required: (<snip>.Sort, Int)
.toMap + (Sort("time"), 1)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦魇绽荼蘼 2024-11-14 01:59:24

是的,他们是需要的。否则编译器会将代码解释为
x.+(y, z) 而不是 x.+((y, z))

相反,您可以再次使用 ArrowAssoc:x + (y -> z)。请注意,还需要括号,因为 +- 具有相同的优先级(只有方法的第一个符号定义其优先级)。

Yes, they are needed. Otherwise the compiler will interpret the code as
x.+(y, z) instead of x.+((y, z)).

Instead, you can use ArrowAssoc again: x + (y -> z). Notice, the parentheses are also needed because + and - have the same precedence (only the first sign of a method defines its precedence).

输什么也不输骨气 2024-11-14 01:59:24

是的,他们是需要的。他们使表达式成为一个元组。逗号分隔列表周围的括号创建元组对象。例如,(1, 2, 3) 是一个三元组数字。

Map+ 方法接受一对 - 换句话说,两个元素的元组。 Map 将映射中的条目表示为(key,value) 元组。

Yes, they're needed. They make the expression a tuple. Parentheses surrounding a comma-separated list create tuple objects. For example, (1, 2, 3) is a 3-tuple of numbers.

Map's + method accepts a pair - in other words a tuple of two elements. Map represents entries in the map as (key,value) tuples.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文