美文网首页
值类型与通用特质

值类型与通用特质

作者: high_m | 来源:发表于2017-11-10 20:53 被阅读0次

值类型与通用特质是scala特性中一个特别知识点,需要工作使用中慢慢体会

通用特质

A universal trait is a trait that extends Any, only has def s as members, and does no initialization.

继承自Any的trait,内部成员只有def定义的方法,且没有初始化语句。

值类型

首先看一个最简值类型(官网)

class Wrapper(val underlying: Int) extends AnyVal {
  def foo: Wrapper = new Wrapper(underlying * 19)
}

值类型都是要继承AnyVal的,更多的情况下,值类型还会继承通用特质,如下:

trait Printable extends Any {
  def print(): Unit = println(this)
}
//Wrapper是一个值类型,继承了Printable通用特质
class Wrapper(val underlying: Int) extends AnyVal with Printable

val w = new Wrapper(3)
//因为继承了普通特质的print方法,招致此处需要实例化Wrapper
w.print() // actually requires instantiating a Wrapper instance

总结

  • Value类虽然没有显示的用final修饰,但是依然可以认为是final类。

参考

1 官方文档
2 Scala 的Value Class 和 Universal Traits
3 通用特质(universal traits)

相关文章

  • 值类型与通用特质

    值类型与通用特质是scala特性中一个特别知识点,需要工作使用中慢慢体会 通用特质 继承自Any的trait,内部...

  • javascript复习笔记一(变量类型与计算)

    变量类型:分为值类型与引用类型 一、值类型与引用类型 值类型:存储的是具体的值(undefined、Boolean...

  • C++学习:Effective Modern C++条款

    条款1:理解模板类型推导 推导模版类型时,引用的值视为非引用,即忽略引用。 推导通用引用类型参数时,左值特殊处理。...

  • JavaScript中的浅拷贝与深拷贝

    值类型与引用类型 谈浅拷贝与深拷贝之前,我们需要先理清一个概念,即值类型与引用类型。 什么是值类型与引用类型?这要...

  • Flutter快速上手1.7:基础控件之Slider和Cuper

    通用属性 属性名类型简介valuedouble当前值 默认 0 -- 1 之间onChangedValueChan...

  • Swfit 枚举

    枚举为一组相关值定义了一个通用类型,从而可以让你在代码中类型安全地操作这些值。 基本用法 原始值(Raw Valu...

  • C# 值类型与引用类型

    C# 值类型与引用类型 值类型 值类型的变量直接存储数据。 值类型:byte,sbyte,short,ushort...

  • C#中数据到底存在堆上还是栈上

    C#的栈与堆 首先复习一下值类型与引用类型 1. 值类型与引用类型 值类型:基本数据类型([int,long,fl...

  • Note 3 Swift (1)

    Swift学习笔记 变量与常量 变量 常量 值类型与引用类型 值类型 引用类型 数组与字典 数组 字典

  • Freemarker常用语法大全

    FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{ex...

网友评论

      本文标题:值类型与通用特质

      本文链接:https://www.haomeiwen.com/subject/npfkmxtx.html