今天我们来学习下如何用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学习内容