Scala中的yield关键字| for / yield示例
Posted 辉常努腻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala中的yield关键字| for / yield示例相关的知识,希望对你有一定的参考价值。
Scala yield关键字
Scala中的yield关键字与for循环一起使用。它在每个for循环迭代中存储一个变量。存储的变量组合在一起,以创建与for循环在同一时间运行的新结构。例如,在映射上使用yield会为列表,数组向量等提供类似的映射结构。
yield的语法是
for (loop condition) yield variable;
示例,使用yield与for循环,循环从1到5
for (i <- 1 to 5) yield (i*5)
输出结果
scala.collection.immutable.IndexedSeq[Int] = Vector(5, 10, 15, 20, 25)
用于Scala数组的for/yield 示例
使用for循环迭代数组的元素,然后使用yield关键字在每次迭代时存储元素。
在这个例子中,我们得到了一个数组,使用for循环,我们可以遍历数组的元素。使用yield关键字,我们将这些元素基于某个表达式存储到另一个数组中。
- 示例
object MyClass
def main(args: Array[String])
val arr = Array(1, 2, 3, 4, 5)
println("该数组是 ")
for(i <- 0 until arr.length)
printf(" "+ arr(i))
var values = for (i <- arr) yield i* 7
println("\\nValues from yield")
for(e <- values) println(e)
- 输出结果
该数组是
1 2 3 4 5
Values from yield
7
14
21
28
35
有关Scala列表中的for/yield 示例
使用follow迭代列表的元素,然后使用yield关键字创建存储所需元素的单独列表。
在此示例中,我们将遍历元素列表。然后,我们将使用yield关键字创建使用某些表达式产生的元素的列表。
- 示例
object MyClass
def main(args: Array[String])
val arr = List(12, 21, 36, 42, 57)
println("该列表是 ")
for(i <- 0 until arr.length)
printf(" "+ arr(i))
var values = for (i <- arr) yield i/ 3
println("\\nValues from yield")
for(e <- values) println(e)
- 输出结果
该列表是
12 21 36 42 57
Values from yield
4
7
12
14
19
对于带有if条件的for循环/yield示例
您还可以添加condition( if condition) 一个for循环迭代指导。在循环迭代之前,将检查条件,根据该条件是否执行循环迭代。
在此示例中,我们将仅迭代数组的偶数个元素。
- 示例
object MyClass
def main(args: Array[String])
val arr = List(12, 21, 36, 42, 57)
println("该列表是 ")
for(i <- 0 until arr.length)
printf(" "+ arr(i))
var values = for (i <- arr if i%2 == 0) yield i/ 3
println("\\nValues from yield")
for(e <- values) println(e)
- 输出结果
该列表是
12 21 36 42 57
Values from yield
4
12
14
以上是关于Scala中的yield关键字| for / yield示例的主要内容,如果未能解决你的问题,请参考以下文章
python 中的“yield”关键字是如何真正起作用的,尤其是当它带有递归时?