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

package com.dt.scalaInAction.demo_086

/**
 * Scala中For表达式的生成器、定义和过滤器
 */
case class Person(name: String, isMale: Boolean, children: Person*)

object ForInAction {
    def main(args: Array[String]): Unit = {
         val lauren = Person("Lauren", false)
         val rocky = Person("Rocky", true)
         val vivian = Person("Vivian", false, lauren, rocky)
         val persons = List(lauren, rocky, vivian)
         
         //for循环操作列表
         /*val forResult = for (person <- persons; if !person.isMale; child <- person.children)
                         yield(person.name, child.name)*/
         val forResult = for {
                            person <- persons;   //生成器:用于遍历元素
                            name = person.name;  //定义
                            if !person.isMale;   //过滤器
                            child <- person.children //处理
                         }
                         yield(person.name, child.name)
         println(forResult) 
         //List((Vivian,Lauren), (Vivian,Rocky))
         
         //定义两个生成器
         val content = for(x<-List(1,2,3);y<-List("Hadoop","Spark","Flink"))
                       yield(x,y)
         println(content)
         //List((1,Hadoop), (1,Spark), (1,Flink), (2,Hadoop), (2,Spark), (2,Flink), (3,Hadoop), (3,Spark), (3,Flink))

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值