Scala 禁止分配值类
Scala Prohibit allocation of value classes
根据有关值 类 的文档,它们可能会在多种情况下分配:
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.
有没有什么说法,如果出现这些情况会抛出一个编译错误?
没有内置任何东西(据我所知)。
您可以编写一个 SBT 插件,在 compile
任务完成后检查 .class
文件(使用 BCEL、ASM 等库),如果发现任何值 class 构造函数调用。
或者,您应该可以用 compiler plugin(不幸的是,我能找到的文档太旧了)做同样的事情,但要稍微困难一些。
根据有关值 类 的文档,它们可能会在多种情况下分配:
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.
有没有什么说法,如果出现这些情况会抛出一个编译错误?
没有内置任何东西(据我所知)。
您可以编写一个 SBT 插件,在 compile
任务完成后检查 .class
文件(使用 BCEL、ASM 等库),如果发现任何值 class 构造函数调用。
或者,您应该可以用 compiler plugin(不幸的是,我能找到的文档太旧了)做同样的事情,但要稍微困难一些。