Scala 中的 apply() 函式
Mohammad Irfan
2023年1月30日
Scala 將函式視為物件,並提供了一個內建函式 apply()
,該函式在呼叫物件後執行,並且可以處理我們在類中編寫的所有邏輯。在 Scala 中,apply 方法遵循一些規則。
- 任何具有 apply 方法的物件都可以在省略
.apply
的情況下呼叫。 - 函式不過是物件。
本教程將討論 apply()
函式並在 Scala 中實現它。
在 Scala 中使用 apply()
函式獲取總和
apply()
函式的最簡單用法是在一個類中實現它並將其稱為常規函式。在這裡,我們提供了通過呼叫 apply()
函式來獲取兩個值之和以及結果的程式碼。
語法:
def apply(n: Int): A
該語法通過索引從給定列表中返回一個元素,作為引數出現在 apply 方法中。
例子:
class MyClass{
def apply(a:Int, b:Int) = {
a+b
}
}
object MainObject{
def main(args:Array[String]){
var e = new MyClass()
val result = e.apply(10,80)
println(result)
}
}
輸出:
90
在 Scala 中應用於迭代列表元素
這是 apply()
函式的另一個用例。我們通過呼叫它來遍歷列表元素。
例子:
class MyClass{
def apply(list:List[Integer]) = {
for( i <- list){
println(i)
}
}
}
object MainObject{
def main(args:Array[String]){
var e = new MyClass()
e.apply(List(0,8,12))
}
}
輸出:
0
8
12
我們還可以使用 apply()
函式來呼叫用複合函式編寫的 lambda 表示式。Lambda 表示式是使用匿名函式而不是變數或值的表示式。
例子:
object MainObject{
def main(args:Array[String]){
val f = (x:Int) => x * 10
val e = f.compose((x:Int) => x - 2)
val result = e.apply(12)
print(result)
}
}
輸出:
100
apply()
函式的常見用途是通過其索引值獲取元素。這意味著我們可以通過呼叫它來獲取任何容器的元素。
例子:
object MainObject{
def main(args:Array[String]){
val list = List(5, 7, 5, 2)
// Applying the apply function
val result = list.apply(2)
print(result)
}
}
輸出:
5