Scala中的yield关键字| for / yield示例

简介: Scala yield关键字Scala中的yield关键字与for循环一起使用。它在每个for循环迭代中存储一个变量。存储的变量组合在一起,以创建与for循环在同一时间运行的新结构。例如,在映射上使用yield会为列表,数组向量等提供类似的映射结构。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
目录
相关文章
|
Java Scala 编译器
Scala关键字lazy的理解和使用
Scala关键字lazy的理解和使用
1359 0
|
Scala Java 编译器
|
2月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
69 5
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
56 3
|
2月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
45 0
|
2月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
101 0
|
2月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
41 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
65 0
|
2月前
|
缓存 分布式计算 大数据
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
61 0