值类是Scala---中的一种特殊机制,用于帮助编译器避免分配运行时对象。
这是通过定义AnyVal的子类来完成的。它唯一的参数是要重新定义其值的数据类型。这用于重新定义除hashCode和equals之外的所有值类型。
可以重新定义的值类型为Char,Int,Float,Double,Long,Short,Byte,Unit和Boolean。
语法:
在Scala---中创建值类的语法,
case class class_name(val val_ name : datatype) extends AnyVal
value类可以有一些方法,这些方法用于重新定义值或将对象创建时使用的值包装为不同的值。
关于值类需要记住的几点,
值类的主要目的是通过避免运行时分配来优化程序。
值类不能被其他类继承。
值类不能嵌套。
值类用于重新定义除hashCode和equals之外的所有值类型。
它只能有方法(def)作为其成员,即不允许任何变量。
//程序显示工作原理 //Scala---中的value类 class valueClass(val str: String) extends AnyVal { def doubleprint() = str + str } object myObject { def main(args: Array[String]) { val obj = new valueClass("Scala--- ") println(obj.doubleprint()) } }
输出:
Scala--- Scala---
说明:
在这里,我们在Scala---中为字符串类型创建了一个名为valueClass的值类,该值类具有一个名为doubleprint的函数,该函数将字符串在对象中存储两次。
通常,值Class用于存储与对象中相同的数据,它仅用于提高性能。
值类用作包装类等类型。而且,包装类的实例不是在编译时创建的,这可以提高性能,因为需要执行的初始化和编译时间更少。