第87讲:scala中使用For表达式做查询

今天我们来学习下如何用for表达式在scala中做查询。

先来看看示例代码

case class Book(title:String,authors:List[String])

object text_87 {   def main(args:Array[String]){

val books:List[Book] = List(

Book("scala programming",List("zhangbanner","dongxicheng","wangjialin")),

Book("quick scala",List("shiming","xuyangkai")),

Book("spark programming",List("wangjialin","wangjiahu")),

Book("hadoop learning",List("dongxicheng","chenchao"))

)

val result = for(b<-books;a<-b.authors if a startsWith "dongxicheng") yield b.title

println(result)

val result2 = for(b <- books if (b.title indexOf "programming" ) >= 0) yield b.title

println(result2)

}

}

首先,我们定义了一个关于书籍的case class Book

然后,使用case class建立了一个书籍库books,它是一个列表,里面每个元素都是一本书以及书的属性。

然后,我们就开始使用for表达式开始进行查询了。

首先,第一个查询,我们通过生成器,便利books列表的所有书籍,接着使用另一个生成器遍历每个书籍的作者列表,建立了一个守卫,取出符合条件的作者名的书,最后,将符合条件的书籍的title形成列表。

再来看看第二个查询,找出title中含有programming的书,并将书的名称形成新列表。

分享下更多的scala资源吧:

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

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

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

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

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

时间: 2024-10-11 23:01:28

第87讲:scala中使用For表达式做查询的相关文章

Scala深入浅出实战经典《第87讲:Scala中使用For表达式做查询》笔记

如知其非义,斯速已矣! 第87讲:Scala中使用For表达式做查询 Goal: For表达式做查询 Gains: for循环的应用 自定义一种类型,根据这种类型创建了一个List数组 针对数组中的内容,利用for循环可以进行相关的查询 More: 使用for循环来做查询~ ------------------------------------------------------------------------------------ 信息来源于 DT大数据梦工厂微信公众账号:DT_Spa

Scala中使用For表达式做查询

学习了Scala中使用For表达式做查询,很多编程中对数据库.文件.网络数据进行查询,应用for表达循环匹配,例子如下: Case calss Book (title:String, authors:List[tring]) Object For_Query { Def main(args:Array[String]) { Val books : List[Book]=List( Book(“Structure and Interpretation”, List(“Abelson,Harold”

Scala 深入浅出实战经典 第87讲:Scala中使用For表达式做查询

for(生成器;定义;过滤器) 来做数据过滤查询 package com.dt.scala.forexpression case class Book(title : String , authors : List[String]) object For_Query { def main(args: Array[String]) { val books: List[Book] = List( Book("Structure and Interpretation ", List(&quo

在scala中使用for表达式做monad运算

在haskell中,我们有语法糖'do'帮助表达monad运算.scala中我们也有相应语法糖'for'. for表达式会被scala compiler做一些变换,简单的例子如下: for { a <- foo b <- bar } yield (a + b) ===> foo.flatMap((a) => { bar.map((b) => { a + b }) }) 所以我们需要实现两个方法 flatMap和map. 还是用前面的state monad作为例子, 我们给类型

Scala深入浅出实战经典《第88讲:Scala中使用For表达式实现map、flatMap、filter》笔记

简直了....晚上回来突然看到了进巨的原稿,忍不住撸了幅三爷,然后什么都没做就23点了... 第88讲:Scala中使用For表达式实现map.flatMap.filter Goal: For表达式实现map/flatMap/filter Gains: map/flatMap/filter是泛型 More: ...... ------------------------------------------------------------------------------------ 信息来

Scala中使用For表达式实现map、flatMap、filter

学习了Scala中使用For表达式实现map.flatMap.filter,可以实现广泛的应用 例子如下: Object For_Advancde { Def main(args: Array[String]) {} Def map[A,B](List: List[A], f:A=>B):List[B]= For (element <-list) yield f(element) Def flatmap[A,B](List: List[A], f:A=>B):List[B]= For (

Scala中的函数表达式

最近看Spark的东西,由于之前没有接触过lambda函数表达式,所以搜了点资料,特地纪录在此 Scala中的Lambda表达式 在函数式编程中,函数是基本的构造块.Scala融合了java中的面向对象编程和函数式编程.在Scala中,一个lambda表达式是种叫做“函数”或者“函数文本”.Scala中的函数属于一等公民.它们可以被分配给vals或者vars(最终变量或者非最终变量),它们可以作为其他函数的参数,也可以组合成新的函数. 在Scala中一个函数文本写成如下形式: ? 1 (argu

Scala中使用For表达式实现内幕思考

学习了Scala中使用For表达式实现内幕思考,filter是if ,for是一般的表达式,有map ,filter等,建议用for循环来代替,更简洁跟具有表现力 例子如下: Object For_Advancde { Def main(args: Array[String]) {} Def map[A,B](List: List[A], f:A=>B):List[B]= For (element <-list) yield f(element) Def flatmap[A,B](List:

第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