Scala Value类
Value类 是一种新的机制,有助于避免在运行时分配对象。 AnyVal 定义了值类。值类是预定义的,它们与类Java语言的原始类型相吻合。
有9种预定义的值类型。Double, Float, Long, Int, Short, Byte, Char, Unit, and Boolean.
equals 或 hashCode 不能由一个值类重新定义。值类主要用于优化性能和内存。
让我们通过一些例子来理解值类。
例子 #1 :
输出
在上面的代码中,在case类的帮助下定义了一个价值类,这里AnyVal定义了价值类(C)。价值类包括一个字符串参数。当我们传递与case语句相同的字符串时,将返回true,否则返回false。
例子 #2 :
输出
正如我们所看到的,在上面的例子中,创建了一个值类,并且表示为一个 int。 上面的代码由值类Vclass中的一个def组成。这里 Vclass 是一个用户定义的值类,它包裹了Int参数并封装了一个平方方法。为了调用平方方法,创建Vclass类的对象,如: val v = new Vclass(5)
Value类的一些限制 –
- 一个值类可能没有专门的类型参数。 可能没有专门的类型参数。
- 一个值类不能有嵌套或局部的类、特征或对象。
- 一个值类不能重新定义 equals 或 hashCode。
- 一个值类不能有 lazy vals, vars, 或 vals 作为成员。它只能有 defs 作为成员。
- 任何其他类都不能扩展一个值类。