Scala 中的 Forall() 函数
-
在 Scala 中使用
forall()
函数迭代集合 -
在 Scala 中使用
forall()
函数处理一个空集合 -
在 Scala 中使用
forall()
和HashMap
-
在 Scala 中使用
forall()
和getOrElse()
函数 -
Scala 中
foreach
和forall
的区别 - 结论
本文将展示 Scala 的 forall()
函数并查看各种示例以了解其用例。
Scala 的 forall()
函数用于在元素集合上应用谓词逻辑。它用于检查我们应用的谓词逻辑是否满足所有集合元素。
语法:
trait Collection[T] {
def forall(p: (T) => Boolean): Boolean
}
forall()
函数检查集合的所有元素是否满足谓词 p
并相应地返回真或假,因为它具有布尔返回类型。让我们看一些将谓词逻辑应用于元素集合的实例。
在 Scala 中使用 forall()
函数迭代集合
下面的示例显示了一个片段,其中 forall
与列表一起使用。
示例代码:
object workspace {
def main(args:Array[String])
{
val studentMarks = List(55, 60, 20, 90, 80)
//applyaing forall method on list
val result = studentMarks.forall(y => y>=50)
if(result)
{
println("Student passed the examination")
}
else
println("Student has failed the examination")
}
}
输出:
Student has failed the examination
逻辑是列表 studentMarks
内的元素应该大于或等于 50。由于 20 小于 50,所以返回 else
语句并存储在结果变量中。
之后,我们使用 if
条件检查结果并相应地打印输出。
在 Scala 中使用 forall()
函数处理一个空集合
forall
方法在处理空集合时总是返回 true
,因为列表中的任何元素都没有违反谓词逻辑。如果列表中没有元素,则谓词逻辑永远不会为假。
示例代码:
object workspace {
def main(args:Array[String])
{
val studentMarks = List[Int]()
//applyaing forall method on list
val result = studentMarks.forall(y=>y>1)
if(result)
{
println("forall returns true")
}
else
println("forall returns false")
}
}
输出:
forall returns true
在 Scala 中使用 forall()
和 HashMap
forall
在这里非常有用。每当我们想对 HashMap 的所有键应用某个条件或检查所有键值对是否满足某个条件时,我们可以使用 forall() 函数。
示例代码:
import scala.collection.mutable
object workspace {
def main(args: Array[String]): Unit = {
val mp = mutable.HashMap[Int, Int](1 -> 100, 2 -> 200, 3->300)
val allValuesHunderedTimeTheKey = mp.forall { case (key, value) => key * 100 == value }
println(allValuesHunderedTimeTheKey)
}
}
输出:
true
我们使用 forall
检查每个值是否是键值的 100 倍。由于所有元素都满足谓词,因此返回 true
。
在 Scala 中使用 forall()
和 getOrElse()
函数
示例代码:
object workspace {
def main(args: Array[String]): Unit = {
val names : Option[Seq[String]] = Option(Seq("Iron man", "Tony", "Stark"))
println(names.map(_.forall(Seq("Bruce").contains)).getOrElse(false))
}
}
输出:
false
map
已将 Option
内的序列创建为布尔值,然后 getOrElse
提供最终结果,提供默认布尔值。
Scala 中 foreach
和 forall
的区别
foreach
经常被初学者与 forall
混淆。让我们看看它们之间的区别。
foreach
函数允许我们遍历元素的集合。forall
函数采用布尔谓词,检查所有元素,如果元素满足条件,则返回true
。
示例代码:
object workspace {
def main(args: Array[String]): Unit = {
val studentMarks = List(55, 60, 20, 90, 80)
//applyaing forall method on list
val result = studentMarks.forall(y => y>=50)
println(result)
studentMarks.foreach(x => println(2*x))
}
}
输出:
false
110
120
40
180
160
使用 forall()
,我们正在检查每个元素是否大于或等于 50,它返回 false
,因为元素 20 不符合条件并使用 foreach()
,我们正在迭代所有元素并仅打印该元素的双倍。
结论
在本文中,我们了解了 Scala 的 forall()
函数及其在各种条件下将谓词逻辑应用于元素集合的用途。