scala 编程思想 _ scala术语表
作者:互联网
1、生成(yield):表达式可以生成结果。yield关键字标示了for表达式的结果。
2、变型(variance):类或特质的类型参数可以用变型标注{Scala中协变(+)、逆变(-)、上界(<:)、下界(>:) 简单介绍)
看源码的时候看到:
trait ExtensionId[T <: Extension] { 没见过这个符号啊<:
1) U >: T
这是类型下界的定义,也就是U必须是类型T的父类(或本身,自己也可以认为是自己的父类)。
2) S <: T
这是类型上界的定义,也就是S必须是类型T的子类(或本身,自己也可以认为是自己的子类)。
然后scala中的泛型符号是[T],而不是Java中的<T>.
tarit Person[+T]{} --协变,在这种情况下,假设S类型是A类型的子类,则Person[S]类型可泛化成Person[T]的子类,也就是被参数化类型的泛化方向与参数类型的方向是一致的,所以称为协变。
tarit Person[-T]{} --逆变,这种情况下,当类型S是类型A的子类型,则Person[A]反过来可以认为是Person[S]的子类型。也就是被参数化类型的泛化方向与参数类型的方向是相反的,所以称为逆变
3、变量(variable):指向对象的具名实体,变量要么是val,要么是var。它们必须在定义的时候被初始化,但只有var可以在之后重新赋值以指向不同的对象。
4、值类型(value type):值类型是指AnyVal的任意子类,如Int、Double或Unit。这个术语在scala源代码级别有意义,在运行时相应java原始类型实例,如java.lang.Integer在值类型实例的整个生命周期中,运行时,可能会把它们的原始类型和包装类型之间前后转换。
5、值(value).任何计算或表达式的结果在scala里都有值,并且,scala里的所有值都是对象,值这个术语在本质上是指对象在内存中镜像。
6、代数数据类型:通过提供若干含有独立构造器的备选项定义的类型。通常可以辅助于通过模式匹配解构类型的方式。这个概念可以在规约语言和函数式编程语言中发现。代数类型在scala可以及用样本类(case classs)模拟。
7、备选项(alternative).match 表达式的分支,形式为 case pattern=>expression 备选项的别名是样本 case
8、注解(annoation)。注解出现在源代码中,并被附加在某个语法部分上。注解可以用计算机处理,所以你可以用它们有效地添加scala的扩展。
9、匿名类(anonymous class).匿名类是由scala编译器通过类或特质trait 跟花括号内new表达式生成合成子类。花括号包含了匿名子类的类结构类。可惟为空,然而,如果new后面的名称指向的特质或类包含了抽象成员。
半_调_子 发布了122 篇原创文章 · 获赞 27 · 访问量 31万+ 私信 关注
标签:编程,scala,子类,可以,术语表,Person,类型,表达式 来源: https://blog.csdn.net/wangjunji34478/article/details/104150196