scala - Scala 中 AnyVal 类型(Int、Double 等)的 +=/*=/etc 运算符

标签 scala

为 AnyVal 的子类声明的 *=/+=/etc 方法到底在哪里?我假设对这些类型做了一些特殊的事情,因为作为 val 那些是无效的,但作为 var 它们很好。这只是更多的合成糖吗?我认为它正在转动

a *= 5

进入

a = a * 5

这显然失败了一个val。这种直觉正确吗?我还假设它只对 AnyVals 进行此尝试?

谢谢:)

最佳答案

你的直觉是正确的。对于any类,不只是AnyVal的子类,如果不存在赋值方法,则a OP= b变成 >a = 一个操作 b。请注意,OP,在这种情况下,必须是非字母数字字符。

这在 Scala Reference 中有描述(Scala 规范),第 6.12.4 节。

关于scala - Scala 中 AnyVal 类型(Int、Double 等)的 +=/*=/etc 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1719613/

相关文章:

scala - SBT 无法识别用 java 文件编写的 junit 测试用例

scala - 如何增加(AKKA-HTTP 客户端)singleRequest 响应卡盘大小

Scala:在for循环中声明val,如果条件

scala - 如何推理 Scala Cats/fs2 中的堆栈安全?

scala - Sbt 打包命令不复制资源

android - 覆盖 onCreateDialog() 时类型不兼容

java - 项目关闭后,Intellij IDEA 如何减少内存?

scala - 如何停止 Spark Streaming

scala - 在 sbt 项目的类路径中添加 tools.jar

eclipse - 使用 Eclipse 和 Tomcat 开发 Scala/Lift Web 应用程序