第86讲:Scala中For表达式的生成器、定义和过滤器

今天我们来看一下For表达式中的生成器,定义和过滤等内容。

让我们来看下代码

def main(args:Array[String]){
     val lauren = Persons("Lauren",false)
    val rocky = Persons("Rocky",true)
    val vivian = Persons("Vivian",false,lauren,rocky)
    val persons = List(lauren,rocky,vivian)
 
   
    val forResult = for(person<-persons;name = person.name;if !person.isMale;child <- person.children) yield(person.name,child.name)
   
      println(forResult)
   
    val content = for(x<-List(1,2,3);y<-List("Hadoop","Spark","Flink")) yield (x,y)
   
    println (content)
  
  }

在第一个For循环中,生成器为person<-persons;person会将persons列表中的所有元素进行遍历。之后,我们还可以定义内容,如name = person.name,这样我们就可以在后面的过滤器和条件中进行使用。过滤器就很好理解了,将遍历的列表中的符合要求的元素进行过滤。在本For循环中,过滤器为if !person.isMale.

让我们来看看第二个For循环,在本For循环中,有两个生成器,x和y分别遍历两个列表,但是,y的遍历是在x的遍历之后的,也就是说,x每遍历一个元素,y就遍历一次所有列表。

最后,生成的结果列表为:
List((1,Hadoop), (1,Spark), (1,Flink), (2,Hadoop), (2,Spark), (2,Flink), (3,Hadoop), (3,Spark), (3,Flink))

分享下更多的scala资源吧:

百度云盘:http://pan.baidu.com/s/1gd7133t

微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416

360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark

关注微信账号,获取更多关于scala学习内容

时间: 2024-10-19 00:45:48

第86讲:Scala中For表达式的生成器、定义和过滤器的相关文章

Scala深入浅出实战经典《第86讲:Scala中For表达式的生成器、定义和过滤器》笔记

第86讲:Scala中For表达式的生成器.定义和过滤器 Goal: For的生成器.定义.过滤器 Gains: 生成器:从集合中取出每个元素,for语句中可以有多个生成器 过滤器: 循环满足的条件 More: 把实例代码跑一遍~ ------------------------------------------------------------------------------------ 信息来源于 DT大数据梦工厂微信公众账号:DT_Spark DT大数据梦工厂scala的所有视频.

Scala中For表达式的生成器、定义和过滤器

学习了Scala中For表达式的生成器.定义和过滤器 ,应用 for是循环列表,根据用户需要进行过滤. Def main(args:Array[String]){ Val  lauren=Person(“Lauren”,false) Val  rocky=Person(“Rocky”,true) Val  vivian=Person(“Vivian”,false, laure,rocky) Val  person=List(Lauren,Rocky,Vivian) Val forResult=f

Scala 深入浅出实战经典 第86讲:Scala中For表达式的生成器、定义和过滤器

package com.dt.scala.forexpression object ForInAction { def main(args: Array[String]) { val lauren = Person("Lauren", false) val rocky = Person("Rocky", true) val vivian = Person("Vivian", false, lauren, rocky) val persons =

第85讲:Scala中For表达式的强大表现力实战

今日[DT大数据梦工厂视频]<第85讲:Scala中For表达式的强大表现力实战>51CTO视频:http://edu.51cto.com/lesson/id-71503.html(DT大数据梦工厂scala的所有视频.PPT和代码在百度云盘的链接:http://url.cn/fSFPjS)85讲 scala for 表达式的强大表现力高阶函数的行为 指定了对数据 处理 的细节 .case class Person(name:String,isMale:Boolean,children:Per

Scala深入浅出实战经典《第85讲:Scala中For表达式的强大表现力实战》笔记

简直了....晚上回来突然看到了进巨的原稿,忍不住撸了幅三爷,然后什么都没做就23点了... 第85讲:Scala中For表达式的强大表现力实战 Goal: 高阶函数(flatmap,map)与for循环的比较与联系(初) Gains: for循环的背后其实还是调用map,但是如果从语句简洁性.表现力两个方面考虑,则更倾向与for循环编程 More: 把实例代码跑一遍,体验一下~ ----------------------------------------------------------

Scala中For表达式的强大表现力

学习了Scala中For表达式的强大表现力,scala 应用for循环比应用高阶函数表现力强很多,高阶函数的行为指定了对数据处理的细节.实际上 for是用map的方式,更加简洁. 例子如下 case  class  Person(name:String,isMale:Boolean,children:Person*)/ildren可变参数 object  For_Expressive{def main(args:Array[String]){val lauren=Person("Lauren&q

scala中的表达式

scala中的表达式是有值的, 所以可以把表达式当做参数来传递, 那么接受表达式的形参定义一般是: block: =>Unit   , 没有形参,返回类型Unit spark中的这个代码很经典,可以传递一个代码块给函数: def tryOrIOException(block: =>Unit){ try{ block } catch { case e:IOException => throw e case NonFatal(t) => throw new IOException(t)

第26讲: Scala中的模式匹配入门实战详解

在scala中使用match表达式进行模式匹配,和其他语言中的switch语句的功能类型.但是match的功能更强大 我们先看一个简单的例子 object HelloPatternMatch {   def main(args: Array[String]): Unit = {     var data : Int = 1          data match {       case 1 => println("one")       case 2 => println

第24讲: Scala中SAM转换实战详解

SAM 是single  abstract method的缩写,就是一些接口只有单个抽象方法 假设我们需要做一个按钮,每当按下按钮时,后台记录一次点击次数.在Java中代码实现的方式如下: package com.dt.scala.func import javax.swing.JButton import java.awt.event.ActionListener import java.awt.event.ActionEvent import javax.swing.JFrame objec