Scala 中的 apply() 函数

Mohammad Irfan 2023年1月30日
  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