据我了解,Scala 中的值类只是将原始类型包装Int
成Boolean
另一种类型,而不会引入额外的内存使用。所以它们基本上被用作普通类的轻量级替代品。
这让我想起了 Haskell 的newtype
表示法,它也用于将现有类型包装在新类型中,从而在不占用额外空间的情况下为某些数据引入新接口(要查看两种语言的相似性,请考虑例如对一个“构造函数”的限制)Haskell和Scala中的字段)。
我想知道为什么引入由编译器内联的新类型的概念没有推广到 Haskell 为任何类型提供零开销类型包装器的方法。为什么 Scala 的人AnyVal
在这里坚持使用原始类型(又名)?
或者 Scala 中是否已经有一种方法可以为Scala.AnyRef
类型定义此类包装器?