Scala 的保留字。其中的一些我们之前已经遇到过,还有许多保留字在Java中也能找到,并且它们在两种语言中的含义是相同的。
注意,表中没有列出break 和continue。这两个流程控制的关键字在Scala 中不存在。Scala 鼓励使用函数式编程的惯用法来实现相同的break、continue 功能。函数式编程通常会更加简洁,不容易出现bug。
一些Java 中的方法名在Scala 中是保留字。如java.util.Scanner.match。为了避免编译错误,引用该方法名时,在名字两边加上反引号,如java.util.Scanner.`match`。
保留字 | 描述 |
abstract | 做抽象声明 |
case | match表达式中的case子句;定义一个case类 |
catch | 捕捉抛出的异常 |
class | 声明一个类 |
def | 定义一个方法 |
do | 用于do...while循环 |
else | 与if配对的else语句 |
extends | 表示接下来的class或trait是所声明的class或trait的父类型 |
FALSE | Boolean的false值 |
final | 用于class或trait,表示不能派生子类型;用于类型成员,则表示派生的 |
class | 或trait不能覆写它 |
finally | finally语句跟在相应的try语句之后,无论是否抛出异常都会执行 |
for | for循环 |
forSome | 用在已存在的类型声明中,限制其能够使用的具体类型 |
if | if语句 |
implicit | 使得方法或变量值可以被用于隐含转换;将方法参数标记为可选的,只要在调用该方法时,作用域内有类型匹配的候选对象,就会使用该对象作为参数 |
import | 将一个或多个类型抑或类型的成员导入到当前作用域 |
lazy | 推迟val变量的赋值 |
match | 用于类型匹配语句 |
new | 创建类的一个新实例 |
null | 尚未被赋值的引用变量的值 |
object | 用于单例声明,单例是只有一个实例的类 |
override | 当原始成员未被声明为final时,用override覆写类型中的一个具体成员 |
package | 声明包的作用域 |
private | 限制某个声明的可见性 |
protected | 限制某个声明的可见性 |
requires | 停用,以前用于自类型 |
return | 从函数返回 |
sealed | 用于父类型,要求所有派生的子类型必须在同一个源文件中声明 |
super | 类似this,但表示父类型 |
this | 对象指向自身的引用;辅助构造函数的方法名 |
throw | 抛出异常 |
trait | 这是一个混入模块,对类的实例添加额外的状态和行为;也可以用于声明而不实现方法,类似Java的interface |
try | 将可能抛出异常的代码块包围起来 |
TRUE | Boolean的true值 |
type | 声明类型 |
val | 声明一个“只读”变量 |
var | 声明一个可读可写的变量 |
while | 用于while循环 |
with | 表示所声明的类或实例化的对象包括后面的trait |
yield | 在for循环中返回元素,这些元素会构成一个序列 |
_ | 占位符,使用在import、函数字面量中很多章节均涉及 |
: | 分隔标识符和类型注解 |
= | 赋值 |
=> | 在函数字面量中分隔参数列表与函数体 |
<- | 在for循环中的生成表达式 |
<: | 在参数化类型和抽象类型声明中,用于限制允许的类型 |
<% | 在参数化类型和抽象类型的viewbound声明中 |
>: | 在参数化类型和抽象类型声明中,用于限制允许的类型 |
# | 在类型注入中使用 |
@ | 注解 |
? | (Unicode\u21D2),与=>相同 |
→ | (Unicode\u2192),与->相同 |
← | (Unicode\u2190),与<-相同 |