在 Scala 3 中,所有類型的定義都可以寫在來源程式碼檔案的「頂層」。例如,您可以建立一個名為 MyCoolApp.scala 的檔案,並將以下內容放入其中
import scala.collection.mutable.ArrayBuffer
enum Topping:
case Cheese, Pepperoni, Mushrooms
import Topping.*
class Pizza:
val toppings = ArrayBuffer[Topping]()
val p = Pizza()
extension (s: String)
def capitalizeAllWords = s.split(" ").map(_.capitalize).mkString(" ")
val hwUpper = "hello, world".capitalizeAllWords
type Money = BigDecimal
// more definitions here as desired ...
@main def myApp =
p.toppings += Cheese
println("show me the code".capitalizeAllWords)
如所示,不需要將這些定義放入 package
、class
或其他建構中。
取代套件物件
如果您熟悉 Scala 2,這種方法取代了套件物件。但雖然使用起來容易得多,但它們的工作方式類似:當您將定義放入名為 foo 的套件中時,您可以在 foo 下的所有其他套件中存取該定義,例如在此範例中的 foo.bar 套件
package foo {
def double(i: Int) = i * 2
}
package foo {
package bar {
@main def fooBarMain =
println(s"${double(1)}") // this works
}
}
此範例中使用大括弧來強調套件巢狀結構。
這種方法的好處是,您可以將定義放入名為 com.acme.myapp 的套件中,然後可以在 com.acme.myapp.model、com.acme.myapp.controller 等中參照這些定義。
此頁面的貢獻者
內容
- 簡介
- Scala 功能
- 為什麼選擇 Scala 3?
- Scala 體驗
- 你好,世界!
- REPL
- 變數和資料類型
- 控制結構
- 領域建模
- 方法
- 一級函數
- 單例物件
- 集合
- 情境抽象
- 頂層定義
- 摘要
- 首次檢視類型
- 字串內插
- 控制結構
- 領域建模
- 工具
- OOP 建模
- FP 建模
- 方法
- 方法功能
- Scala 3 中的主要方法
- 摘要
- 函數
- 匿名函數
- 函數變數
- Eta 擴充
- 高階函數
- 撰寫自訂 map 方法
- 建立回傳函數的方法
- 摘要
- 封裝和匯入
- Scala 集合
- 集合類型
- 集合方法
- 摘要
- 函式程式設計
- 什麼是函式程式設計?
- 不可變值
- 純函數
- 函數是值
- 函式錯誤處理
- 摘要
- 類型和類型系統
- 推論的類型
- 泛型
- 交集類型
- 聯集類型
- 代數資料類型
- 變異
- 不透明類型
- 結構類型
- 相依函數類型
- 其他類型
- 情境抽象
- 擴充方法
- 情境參數
- 情境界限
- 給定匯入
- 類型類別
- 多重宇宙等式
- 隱式轉換
- 摘要
- 並行
- Scala 工具
- 使用 sbt 建置和測試 Scala 專案
- 工作表
- 與 Java 互動
- Java 開發人員的 Scala
- JavaScript 開發人員的 Scala
- Python 開發人員的 Scala
- 下一步