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),與<-相同 |