Scala 中的 apply() 函数
Mohammad Irfan
2023年1月30日
2022年5月18日
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