根据值(value)类别的文档,它们可能会在多种情况下分配:
Allocation Summary
a value class is treated as another type.
a value class is assigned to an array.
doing runtime type tests, such as pattern matching.
有没有办法说,如果出现这些情况,会抛出编译错误?
最佳答案
没有任何内置(AFAIK)。
您可以编写一个 SBT 插件来检查 .class
compile
之后的文件任务完成(使用 BCEL、ASM 等库)并且如果它找到任何值类构造函数调用则失败。
或者,您应该可以用 compiler plugin 做同样的事情。 (不幸的是,我能找到的文档已经很旧了)有点困难。
关于Scala 禁止分配值类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37206953/