Scala 中的 apply() 函式

Mohammad Irfan 2023年1月30日 2022年5月18日
  1. 在 Scala 中使用 apply() 函式獲取總和
  2. 在 Scala 中應用於迭代列表元素
Scala 中的 apply() 函式

Scala 將函式視為物件,並提供了一個內建函式 apply(),該函式在呼叫物件後執行,並且可以處理我們在類中編寫的所有邏輯。在 Scala 中,apply 方法遵循一些規則。

  1. 任何具有 apply 方法的物件都可以在省略 .apply 的情況下呼叫。
  2. 函式不過是物件。

本教程將討論 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