Scala 方法
Scala 類別、案例類別、特質、列舉和物件都可以包含方法。簡單方法的語法如下所示
def methodName(param1: Type1, param2: Type2): ReturnType =
// the method body
// goes here
以下是一些範例
def sum(a: Int, b: Int): Int = a + b
def concatenate(s1: String, s2: String): String = s1 + s2
您不必宣告方法的回傳類型,因此如果您願意,可以用這種方式撰寫這些方法
def sum(a: Int, b: Int) = a + b
def concatenate(s1: String, s2: String) = s1 + s2
以下是呼叫這些方法的方式
val x = sum(1, 2)
val y = concatenate("foo", "bar")
以下是多行方法的範例
def getStackTraceAsString(t: Throwable): String = {
val sw = new StringWriter
t.printStackTrace(new PrintWriter(sw))
sw.toString
}
def getStackTraceAsString(t: Throwable): String =
val sw = new StringWriter
t.printStackTrace(new PrintWriter(sw))
sw.toString
方法參數也可以有預設值。在此範例中,timeout
參數的預設值為 5000
def makeConnection(url: String, timeout: Int = 5000): Unit =
println(s"url=$url, timeout=$timeout")
由於方法宣告中提供了預設 timeout
值,因此可以透過這兩種方式呼叫方法
makeConnection("https://127.0.0.1") // url=https://127.0.0.1, timeout=5000
makeConnection("https://127.0.0.1", 2500) // url=https://127.0.0.1, timeout=2500
Scala 也支援在呼叫方法時使用命名參數,因此如果您願意,也可以用這種方式呼叫該方法
makeConnection(
url = "https://127.0.0.1",
timeout = 2500
)
當多個方法參數具有相同的類型時,命名參數特別有用。乍看之下,對於這個方法,您可能會想知道哪些參數設定為 true
或 false
engage(true, true, true, false)
extension
關鍵字宣告您即將在括號中放入的參數上定義一個或多個擴充方法。如範例所示,類型為 String
的參數 s
可以在擴充方法的主體中使用。
下一個範例顯示如何將 makeInt
方法新增到 String
類別。在此,makeInt
採用名為 radix
的參數。程式碼未考量可能發生的字串轉換為整數的錯誤,但跳過這些細節,範例顯示其運作方式
extension (s: String)
def makeInt(radix: Int): Int = Integer.parseInt(s, radix)
"1".makeInt(2) // Int = 1
"10".makeInt(2) // Int = 2
"100".makeInt(2) // Int = 4
另請參閱
Scala 方法可以強大許多:它們可以採用類型參數和內容參數。它們在 網域建模 區段中詳細介紹。
此頁面的貢獻者
內容
- 簡介
- Scala 功能
- 為何選擇 Scala 3?
- Scala 體驗
- Hello, World!
- REPL
- 變數和資料類型
- 控制結構
- 網域建模
- 方法
- 一級函數
- 單例物件
- 集合
- 內容抽象
- 頂層定義
- 摘要
- 類型簡介
- 字串內插
- 控制結構
- 網域建模
- 工具
- OOP 建模
- FP 建模
- 方法
- 方法功能
- Scala 3 中的主要方法
- 摘要
- 函數
- 匿名函數
- 函數變數
- Eta 展開
- 高階函數
- 撰寫您自己的 map 方法
- 建立傳回函數的方法
- 摘要
- 封裝和匯入
- Scala 集合
- 集合類型
- 集合方法
- 摘要
- 函數式程式設計
- 什麼是函數式程式設計?
- 不可變值
- 純函數
- 函數是值
- 函數式錯誤處理
- 摘要
- 類型和類型系統
- 推論類型
- 泛型
- 交集類型
- 聯集類型
- 代數資料類型
- 變異
- 不透明類型
- 結構類型
- 依賴函數類型
- 其他類型
- 內容抽象
- 擴充方法
- 內容參數
- 內容界限
- 已給定匯入
- 類型類別
- 多重相等
- 隱式轉換
- 摘要
- 並行處理
- Scala 工具
- 使用 sbt 建置和測試 Scala 專案
- 工作表
- 與 Java 互動
- Java 開發人員的 Scala
- JavaScript 開發人員的 Scala
- Python 開發人員的 Scala
- 下一步