Scala yield关键字

Scala yield关键字

yield 关键字将在完成循环迭代后返回一个结果。for循环在内部使用缓冲区来存储迭代的结果,当完成所有的迭代后,会从缓冲区中产生最终的结果。它的工作方式与指令性循环不同。返回的集合的类型与我们倾向于迭代的类型相同,因此Map会产生Map,List会产生List,以此类推。

语法

var result = for{ var x <- List}
yield x

注意: 大括号用来保持变量和条件,结果是一个变量,所有x的值都保持在集合的形式中。

例子

// Scala program to illustrate yield keyword
  
// Creating object
object GFG 
{ 
    // Main method
    def main(args: Array[String]) 
    { 
        // Using yield with for
        var print = for( i <- 1 to 10) yield i 
        for(j<-print)
        { 
            // Printing result
            println(j) 
        } 
    } 
} 

输出

1
2
3
4
5
6
7
8
9
10

在上面的例子中,与yield语句一起使用的for循环实际上创建了一个列表的序列。

例子

// Scala program to illustrate yield keyword
  
// Creating object
object GFG 
{ 
    // Main method
    def main(args: Array[String]) 
    { 
        val a = Array( 8, 3, 1, 6, 4, 5)
          
        // Using yield with for
        var print=for (e <- a if e > 4) yield e
        for(i<-print)
        { 
            // Printing result
            println(i) 
        } 
    } 
} 

输出

8
6
5

在上面的例子中,for循环中使用的yield语句实际上创建了一个数组。因为我们说yield e,它是一个Array[n1, n2, n3, ....]e <- a是我们的生成器, if (e > 4)可能是一个防护措施,过滤掉那些似乎不大于4的数字。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程