Scala 中的約定

 內容來自書籍《Scala 實用指南》3.8

Scala 中有一些約定,可以讓代碼簡潔且易於閱讀、編寫。下面是這些特性的示例。

  • 支持腳本。不是所有的代碼都需要放在一個類中。如果一個腳本就能滿足需求,就直 接將可執行的代碼放在一個文件中,沒有必要都堆在一個類中。

  • return 是可選的。假定最後一個求值的表達式能夠匹配方法所聲明的返回類型,那 麼這個表達式的求值結果將會自動作爲方法調用的結果值返回。無須加入顯式的 return 語句可以簡化代碼,尤其是在將一個閉包傳遞爲方法參數時。

  • 分號是可選的。不需要使用分號來標識每一個語句或者表達式的結束(參見 3.10.3 節)這個特性能夠去除代碼中的噪聲。如果要多個語句放在同一行上面,可以使用分 號來分隔。沒有分號,Scala 也能智能地推斷出一個語句或者表達式是否是完整的, 如果不是,那麼 Scala 將會接着在下一行讀取剩餘的代碼。

  • 類和方法默認就是公開的,所以你無須顯式使用 public 關鍵字。

  • Scala 提供輕便的語法以創建 JavaBeans— 它用很少的代碼就能創建變量和不可變

    的屬性。

  • 對於我們不關心的那些異常,Scala不會強制要求進行捕獲,能夠縮減代碼體積,同時也能夠避免不合理的異常處理。

  • 括號和點號也是可選的。

除此之外,Scala 默認會導入兩個包、scala.Predef 對象以及它們相應的類和成員。 只用類名就可以從這些預導入的包中引用相應的類。Scala 按照順序導入下面的包和類:

• java.lang
• scala
• scala.Predef

因爲 java.lang 已經自動導入,所以無須額外的導入就可以在腳本中使用通用的 Java 類型。例如,可以使用 String,而且不用在前面加上包名 java.lang 作前綴或者 導入它。

也可以直接使用 Scala 的類型,因爲 scala 包中的一切都已經導入。

Predef 對象中包含了類型、隱式轉換以及在 Scala 中常用的一些方法。所以,既然已 經默認導入,那麼無須任何前綴或者導入,就可以直接使用那些方法和隱式轉換。它們太方 便了,以至於你開始相信它們是 Scala 的一部分,實際上它們是 Scala 標準庫的一部分。

Predef 對象還提供了一些類型的別名,如 scala.collection.immutable.Set 和 scala.collection.immutable.Map。因此,當使用 Set 或者 Map 的時候,實際使用的 是Predef中對它們的定義,它們分別指向它們在scala.collection.immutable包中的 定義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章