提示:在下列範例中,請嘗試選擇您偏好的 Scala 版本。
您的第一個 Scala 程式
Scala 的「你好,世界!」範例如下。首先,將此程式碼放入名為 hello.scala 的檔案中
object hello {
def main(args: Array[String]) = {
println("Hello, World!")
}
}
在此程式碼中,我們定義了一個名為
main
的方法,在一個名為hello
的 Scalaobject
中。Scala 中的object
類似於class
,但定義了一個您可以傳遞的單例實例。main
接收一個名為args
的輸入參數,必須鍵入為Array[String]
,(現在先忽略args
)。
@main def hello() = println("Hello, World!")
在此程式碼中,
hello
是一個方法。它使用def
定義,並使用@main
註解宣告為「main」方法。它使用println
方法將"Hello, World!"
字串列印到標準輸出 (STDOUT)。
接著,使用 scalac
編譯程式碼
$ scalac hello.scala
如果您從 Java 轉換到 Scala,scalac
就如同 javac
,因此該指令會建立多個檔案
$ ls -1
hello$.class
hello.class
hello.scala
$ ls -1
hello$package$.class
hello$package.class
hello$package.tasty
hello.scala
hello.class
hello.tasty
與 Java 相同,.class 檔案是位元組碼檔案,且已準備好在 JVM 中執行。
現在,您可以使用 scala
指令執行 hello
方法
$ scala hello
Hello, World!
假設執行成功,恭喜您,您剛剛編譯並執行您的第一個 Scala 應用程式。
有關 sbt 和其他讓 Scala 開發更輕鬆的工具的更多資訊,請參閱 Scala 工具 章節。
要求使用者輸入
在我們的下一個範例中,讓我們在向使用者問候之前詢問使用者的姓名!
有許多方法可以從命令列讀取輸入,但一個簡單的方法是使用 scala.io.StdIn 物件中的 readLine
方法。若要使用它,您需要先匯入它,如下所示
import scala.io.StdIn.readLine
為了展示其運作方式,讓我們建立一個小範例。將此原始碼放入名為 helloInteractive.scala 的檔案中
import scala.io.StdIn.readLine
object helloInteractive {
def main(args: Array[String]) = {
println("Please enter your name:")
val name = readLine()
println("Hello, " + name + "!")
}
}
import scala.io.StdIn.readLine
@main def helloInteractive() =
println("Please enter your name:")
val name = readLine()
println("Hello, " + name + "!")
在此程式碼中,我們將 readLine
的結果儲存到名為 name
的變數中,然後我們使用字串上的 +
算子將 "Hello, "
與 name
和 "!"
結合,形成一個單一的字串值。
您可以透過閱讀 變數和資料類型,進一步了解如何使用
val
。
接著,使用 scalac
編譯程式碼
$ scalac helloInteractive.scala
然後使用 scala helloInteractive
執行它,這次程式會在詢問您的姓名後暫停,並等到您輸入姓名並按下鍵盤上的 Enter 鍵,如下所示
$ scala helloInteractive
Please enter your name:
▌
當您在提示中輸入您的姓名時,最後的互動應如下所示
$ scala helloInteractive
Please enter your name:
Alvin Alexander
Hello, Alvin Alexander!
關於匯入的注意事項
正如您在這個應用程式中所見,有時某些方法或我們稍後會看到的其他類型的定義,除非您使用 import
子句,否則無法使用
import scala.io.StdIn.readLine
匯入有助於您以幾種方式撰寫程式碼
- 您可以將程式碼放入多個檔案中,以避免雜亂並協助瀏覽大型專案。
- 您可以使用程式碼庫,也許是由其他人撰寫的,其中具有有用的功能
- 您可以知道某個定義來自何處(特別是如果它不是寫在目前的檔案中)。
此頁面的貢獻者
內容
- 簡介
- Scala 特色
- 為何選擇 Scala 3?
- Scala 體驗
- 你好,世界!
- REPL
- 變數和資料類型
- 控制結構
- 網域建模
- 方法
- 一級函數
- 單例物件
- 集合
- 情境抽象
- 頂層定義
- 摘要
- 類型初探
- 字串內插
- 控制結構
- 網域建模
- 工具
- OOP 建模
- FP 建模
- 方法
- 方法特色
- Scala 3 中的主要方法
- 摘要
- 函數
- 匿名函數
- 函數變數
- Eta 展開
- 高階函數
- 撰寫您自己的 map 方法
- 建立會傳回函數的方法
- 摘要
- 封裝和匯入
- Scala 集合
- 集合類型
- 集合方法
- 摘要
- 函數式程式設計
- 什麼是函數式程式設計?
- 不可變值
- 純函數
- 函數是值
- 函數式錯誤處理
- 摘要
- 類型和類型系統
- 推論類型
- 泛型
- 交集類型
- 聯集類型
- 代數資料類型
- 變異性
- 不透明類型
- 結構類型
- 依賴函數類型
- 其他類型
- 情境抽象
- 擴充方法
- 情境參數
- 情境界線
- 給定匯入
- 類型類別
- 多重宇宙等式
- 隱式轉換
- 摘要
- 並行處理
- Scala 工具
- 使用 sbt 建置和測試 Scala 專案
- 工作表
- 與 Java 互動
- Java 開發人員的 Scala
- JavaScript 開發人員的 Scala
- Scala 給 Python 開發人員
- 下一步