scala中yeild举例用法

scala中yeild举例用法Scala中的yield的主要作用是记住每次迭代中的有关值,并逐一存入到一个数组中。用法如下:for{子句}yield{变量或表达式}具体举例如下,该例子获取文本文件中包含指定关键字的相关行,并统计各相关行字数,先把文本文件内容贴出来:IloveScala.IloveSpark.IloveHadoop.下面是程序代码:objectYieldDemo{…

大家好,欢迎来到IT知识分享网。scala中yeild举例用法

Scala中的yield的主要作用是记住每次迭代中的有关值,并逐一存入到一个数组中。
用法如下:
for {子句} yield {变量或表达式}
具体举例如下,该例子获取文本文件中包含指定关键字的相关行,并统计各相关行字数,先把文本文件内容贴出来:
I love Scala.
I love Spark.
I love Hadoop.

下面是程序代码:

object YieldDemo {

    lazy val files = (new java.io.File(“D:\\Scala_Projects\\ScalaInAction\\src\\com\\zhangyun\\scala\\hello”)).listFiles
    // 输出指定目录下的所有文件
    /*for(file <- files)
    {

        println(file)
    }*/
    
    def fileLines(file: java.io.File) = {

        Source.fromFile(file).getLines.toList
    }

    def main(args: Array[String]): Unit = {

        val lengths =
        for {

            // 获取以.txt结尾的文件
            file <- files if file.getName.endsWith(“.txt”)
            
            line <- fileLines(file)
            
            trimmedLine = line.trim
            if trimmedLine.matches(“.*love.*”)
        } yield line + “:合计” + trimmedLine.length + “个字。”

        lengths.foreach(println)
    }
}
先来看看输出:
I love Scala.:合计13个字。
I love Spark.:合计13个字。
I love Hadoop.:合计14个字。

注意点:

yield最终会将每次迭代的line + “:合计” + trimmedLine.length + “个字。”结果存放到一个数组中.
在这里是一条表达式,如果你用 trimmedLine.length 替代这条语句,则将每次迭代的trimmedLine.length值存放到数组中。
如果将yield改为:
} yield {

            println(line)
            trimmedLine.length
        }
则在每次迭代中会打印各相关行内容。各相关行字数会存入到数组中,并通过程序最后一条代码lineLengths.foreach(println)打印出来。
要记住,要将结果存放到数组的变量或表达式必须放在yield{}里最后位置。结果如下:
I love Scala.
I love Spark.
I love Hadoop.
13
13
14
——————— 
作者:Free World 
来源:CSDN 
原文:https://blog.csdn.net/jiangshouzhuang/article/details/48751143 
版权声明:本文为博主原创文章,转载请附上博文链接!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/13002.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信