Scala 3 遷移指南

Scala 3 遷移模式

語言

Scala 3 編譯器提供了一些有用的公用程式,以簡化遷移。

嘗試執行 scalac 以一窺這些公用程式

scalac 是 Scala 編譯器的可執行檔,可從 Github 下載。

它也可以使用 Coursier 安裝,指令為 cs install scala3-compiler,在這種情況下,scalac 會別名為 scala3-compiler

$ scalac
Usage: scalac <options> <source files>
where possible standard options include:

...
-explain           Explain errors in more detail.
...
-rewrite           When used in conjunction with a `...-migration` source version, rewrites sources to migrate to new version.
...
-source            source version
                   Default: 3.0.
                   Choices: 3.0, future, 3.0-migration, future-migration.
...

遷移模式

-source:3.0-migration 選項讓編譯器寬容於大多數已移除的功能,列印警告而不是錯誤。每個警告都強烈表示編譯器甚至能夠安全地將已棄用的程式碼片段改寫為其跨編譯對應程式碼。

我們稱之為Scala 3 遷移編譯

自動改寫

一旦你的程式碼在遷移模式下編譯,幾乎所有警告都能自動由編譯器本身解決。為此,你只需要再次編譯,這次使用 -source:3.0-migration-rewrite 選項。

請注意編譯器會修改程式碼!這是為了安全。然而,你可能想要提交初始狀態,以便你可以列印編譯器套用的 diff,並在必要時還原它。

須知

  • 如果程式碼編譯時發生錯誤,則不會套用重寫。
  • 你無法選擇套用哪些規則,編譯器會執行所有規則。

你可以參考 不相容性表格 查看 Scala 3 遷移重寫清單。

錯誤說明

-source:3.0-migration 模式處理許多已變更的功能,但並非全部。編譯器可以在使用 -explain 和/或 -explain-types 選項呼叫時提供有關剩餘錯誤的更多詳細資訊。

-explain-explain-types 選項不限於遷移。它們通常可以協助你學習和編寫 Scala 3。

此頁面的貢獻者