scala - Scala 的 += 在 Int 的上下文中定义在哪里?

标签 scala operators

刚开始使用 Scalavar c = 0c += 1作品c.+=给我 error: value += is not a member of Int+=在哪里定义?

最佳答案

Section 6.12.4 Assignment Operators of the Scala Language Specification (SLS)解释了如何对这种复合赋值运算符进行脱糖:

l ω= r

(其中 ω 是除 <>! 之外的任何运算符字符序列,并且不以 = 开头)被脱糖为
l.ω=(r)

IFF l有一个名为 ω= 的成员或可隐式转换为具有名为 ω= 的成员的对象.

否则,它会被脱糖
l = l.ω(r)

(除了 l 保证只被评估一次),如果类型检查。

或者,更简单地说:编译器将首先尝试 l.ω=(r)如果这不起作用,它会尝试 l = l.ω(r) .

这允许类似 +=像在其他语言中一样工作,但仍然被覆盖以做不同的事情。

关于scala - Scala 的 += 在 Int 的上下文中定义在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41774017/

相关文章:

javascript - 为什么 var c = "a"|| "b"返回 c = "a"和 var c = "a"&& "b"返回 c = "b"?

sockets - 停止 Akka HTTP 服务器

class - 为什么 Scala 已经有了特性,它还有类?

c - 这是 + 运算符在 C 中的实现方式吗?

java - java 中的逻辑运算符(使用 Struts 1 的验证)

Java Postfix 增量运算符行为

c - 一行代码中的多个逻辑运算符

scala - 匹配列表列表中的单个元素

scala - 是否可以推迟宏扩展,直到抽象类型绑定(bind)到特定类型

scala - 为什么我不能重写 Scala 中采用值类作为参数的方法?