在本文中,我们将演示如何在Scala的集合上使用exists函数,该函数适用于Scala的可变(Mutable)和不可变(Immutable)集合。
exists函数接受谓词函数(predicate function),并将使用该函数查找集合中与谓词匹配的第一个元素。
Scala文档中exists函数的定义如下:
代码语言:javascript复制def exists(p: (A) ⇒ Boolean): Boolean
exists函数是IterableLike特质(trait)的一个成员。
示例
1、如何初始化甜甜圈序列(a Sequence of donuts):
下面的代码演示了如何初始化一个包含String类型元素的甜甜圈序列:
代码语言:javascript复制println("Step 1: How to initialize a Sequence of donuts")
val donuts: Seq[String] = Seq("Plain Donut", "Strawberry Donut", "Glazed Donut")
println(s"Elements of donuts = $donuts")
输出:
代码语言:javascript复制Step 1: How to initialize a Sequence of donuts
Elements of donuts = List(Plain Donut, Strawberry Donut, Glazed Donut)
2、使用exists函数如何检查在序列中是否存在一个指定的元素:
下面的代码展示了如何使用exists函数来查找某个特定元素是否存在于一个序列中——更准确地说,就是使用exists函数来查找甜甜圈序列中存在普通甜甜圈元素:
代码语言:javascript复制println("nStep 2: How to check if a particular element exists in the sequence using the exists function")
val doesPlainDonutExists: Boolean = donuts.exists(donutName => donutName == "Plain Donut")
println(s"Does Plain Donut exists = $doesPlainDonutExists")
输出:
代码语言:javascript复制Step 2: How to check if a particular element exists in the sequence using the exists function
Does Plain Donut exists = true
3、如何为exists函数声明谓词值函数:
下面的代码展示了如何声明谓词值函数来查找序列中是否存在普通的甜甜圈元素:
代码语言:javascript复制println("nStep 3: How to declare a predicate value function for the exists function")
val plainDonutPredicate: (String) => Boolean = (donutName) => donutName == "Plain Donut"
println(s"Value function plainDonutPredicate = $plainDonutPredicate")
输出:
代码语言:javascript复制Step 3: How to declare a predicate value function for the exists function
Value function plainDonutPredicate = <function1>
注意: 谓词函数是一个值函数(Value Function)
4、如何使用exists函数并通过步骤3的谓词函数查找元素Plain Donut:
下面的代码展示了如何调用exists方法并传递步骤3中的值谓词函数,以查找甜甜圈序列中是否存在普通的甜甜圈元素:
代码语言:javascript复制println("nStep 4: How to find element Plain Donut using the exists function and passing through the predicate function from Step 3")
println(s"Does Plain Donut exists = ${donuts.exists(plainDonutPredicate)}")
输出:
代码语言:javascript复制Step 4: How to find element Plain Donut using the exists function and passing through the predicate function from Step 3
Does Plain Donut exists = true
5、如何为exists函数声明谓词def函数:
下面的代码展示了如何使用谓词def函数查找序列中是否存在普通的甜甜圈元素:
代码语言:javascript复制println("nStep 5: How to declare a predicate def function for the exists function")
def plainDonutPredicateFunction(donutName: String): Boolean = donutName == "Plain Donut"
6、如何使用exists函数并通过步骤5中的谓词def函数查找元素Plain Donut:
下面的代码展示了如何调用exists方法并通过步骤5中的def谓词函数查找甜甜圈序列中是否存在普通的甜甜圈元素:
代码语言:javascript复制println("nStep 6: How to find element Plain Donut using the exists function and passing through the predicate function from Step 5")
println(s"Does plain Donut exists = ${donuts.exists(plainDonutPredicateFunction(_))}")
输出:
代码语言:javascript复制Step 6: How to find element Plain Donut using the exists function and passing through the predicate function from Step 5
Does plain Donut exists = true
编译自:Scala Tutorial - Learn How To Use Exists Function