- Scala編程(第5版)
- (德)馬丁·奧德斯基等
- 924字
- 2022-05-06 15:51:38
4.5 Scala應用程序
要運行一個Scala程序,必須提供一個獨立對象的名稱,而這個獨立對象需要包含一個main方法,該方法接收一個Array[String]作為參數,結果類型為Unit。任何帶有滿足正確簽名的main方法的獨立對象都能被用作應用程序的入口。[8]參考示例4.3。

示例4.3 Summer應用程序
示例4.3中單例對象的名稱是Summer。它的main方法帶有正確的簽名,因此可以將它當作應用程序來使用。文件中的第一條語句引入了示例4.2的ChecksumAccumulator對象中定義的calculate方法。這句引入語句讓你可以在這個文件后續的代碼中使用這個方法的簡稱。[9]main方法的方法體只是簡單地打印出每個參數,以及參數的校驗和,并以冒號分隔開。
注意
Scala在每一個Scala源碼文件中都隱式地引入了java.lang和scala包的成員,以及名稱為Predef的單例對象的所有成員。位于scala包的Predef包含了很多有用的方法。比如,當你在Scala源碼中使用println時,實際上調用了Predef的println。(Predef.println轉而調用Console.println,執行具體的操作。)而當你寫下assert時,實際上調用了Predef.assert。
要運行Summer這個應用程序,可以把示例4.3中的代碼放入名稱為Summer.scala的文件中。因為Summer也用到了ChecksumAccumulator,將示例4.1中的類和示例4.2中的伴生對象放入名稱為ChecksumAccumulator. scala的文件中。
Scala和Java的區別之一是,Java要求將公共的類放入與類同名的文件中(例如,需要將SpeedRacer類放到SpeedRacer.java文件中),而Scala允許任意命名.scala文件,無論你將什么類或代碼放到這個文件中。不過,通常對于那些非腳本的場景,把類放入以類名命名的文件中是推薦的做法,就像Java那樣,以便程序員能夠更容易地根據類名定位到對應的文件。這也是我們在命名Summer.scala和ChecksumAccumulator.scala時所采取的策略。
ChecksumAccumulator.scala和Summer.scala都不是腳本,因為它們都是以定義結尾的。而腳本則不同,必須以一個可以計算出結果的表達式結尾。因此,如果你嘗試以腳本的方式運行Summer.scala,則編譯器會報錯,提示你Summer.scala并不以一個結果表達式結尾(當然,這是假設你并沒有在Summer對象定義之后自己再添加任何額外的表達式)。你需要用Scala編譯器實際編譯這些文件,然后運行編譯出來的類。編譯的方式之一是,使用scalac這個基礎的Scala編譯器,就像這樣:

這將編譯你的源文件,并生成Java類文件,后續可以通過與先前示例中相同的scala命令來運行該文件。不過,與之前用包含了需要編譯器解釋的Scala代碼的以.scala擴展名結尾的文件名不同,[10]這里需要給出包含正確簽名的main方法的獨立對象名。因此,需要這樣運行Summer:

你將看到這個程序打印出了傳入的兩個命令行參數對應的校驗和:

- 從零開始構建企業級RAG系統
- DBA攻堅指南:左手Oracle,右手MySQL
- LaTeX Cookbook
- Microsoft Exchange Server PowerShell Cookbook(Third Edition)
- LabVIEW程序設計基礎與應用
- Monkey Game Development:Beginner's Guide
- Learning PostgreSQL
- 64位匯編語言的編程藝術
- 高級語言程序設計(C語言版):基于計算思維能力培養
- C語言程序設計教程
- Julia高性能科學計算(第2版)
- iOS自動化測試實戰:基于Appium、Python與Pytest
- Android嵌入式系統程序開發:基于Cortex-A8(第2版)
- 軟件測試綜合技術
- 分布式數據庫原理、架構與實踐