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后面的名称指向的特质或类包含了抽象成员。

发布了131 篇原创文章 · 获赞 27 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/wangjunji34478/article/details/104150196
今日推荐