文档章节

Scala if Statements and for Loop

秋风醉了
 秋风醉了
发布于 2015/12/20 23:39
字数 408
阅读 76
收藏 1

Scala if Statements and for Loop


Scala if Statements

scala 中的 if 和其它编程语言中不同的一点是 if 表达式的返回值。比如下面这样,

val configFilePath = if (configFile.exists()) {
  configFile.getAbsolutePath
} else {
  configFile.createNewFile()
  configFile.getAbsolutePath
}

configFilePath: String = /Applications/IntelliJ IDEA 15.app/Contents/bin/somefile.txt


Scala for Loops

一个基本的for循环语句,

val dogBreeds = List("Doberman", "Yorkshire Terrier", "Dachshund", "Scottish Terrier", "Great Dane", "Portuguese Water Dog")

for (bread <- dogBreeds)
  println(bread)

Generator Expressions

表达式 

bread <- dogBreeds

叫做generator expression,这样命名是因为它从一个集合里产生一个个体值。left arrow operator (<-) 是用来遍历一个集合的。比如下面这样,

for (i <- 1 to 10) println(i)

Scala for Loops:Filtering Values

在for循环中,可以过滤数据,如下,

val dogBreeds = List("Doberman", "Yorkshire Terrier", "Dachshund", "Scottish Terrier", "Great Dane", "Portuguese Water Dog")
for (bread <- dogBreeds
     if bread.contains("Terrier")
) println(bread)

还可以使用多个过滤条件,

for (bread <- dogBreeds
     if bread.contains("Terrier")
     if !bread.startsWith("Yorkshire")
) println(bread)

这两种方式是等价的,

for (bread <- dogBreeds
     if bread.contains("Terrier") && !bread.startsWith("Yorkshire")
) println(bread)

Yielding

上面那段话的意义就是,for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。Scala 中 for 循环是有返回值的。如果被循环的是 Map,返回的就是 Map,被循环的是 List,返回的就是 List,以此类推。

scala> val filteredBreeds =
     |   for (breed <- dogBreeds
     |        if breed.contains("Terrier") && !breed.startsWith("Yorkshire")
     |   ) yield breed
filteredBreeds: List[String] = List(Scottish Terrier)

scala>

scala> filteredBreeds.toString()
res3: String = List(Scottish Terrier)

下面遍历Map,

scala> val map = Map("key1" -> "value1", "key2" -> "value2", "key3" -> "value3")
map: scala.collection.immutable.Map[String,String] = Map(key1 -> value1, key2 -> value2, key3 -> value3)

scala> val temp_map = for (m <- map
     |                     if m._1.equals("key1")
     | ) yield m
temp_map: scala.collection.immutable.Map[String,String] = Map(key1 -> value1)

scala> temp_map.toString()
res4: String = Map(key1 -> value1)

=============END=============

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 241
博文 566
码字总数 417505
作品 0
朝阳
程序员
私信 提问
《Oracle PL/SQL开发指南》学习笔记19——Control Structures(Review Section,Mastery Check)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hpdlzu80100/article/details/84502552 这章是programming的核心所在。 Conditional Statements Review Sect...

预见未来to50
2018/11/25
0
0
Scala 的 yield 例子 (for 循环和 yield 的例子)

我看了《Programming in Scala》一书,仍然对 Scala yield 关键字的理解不甚清楚。起初我以为 Scala yield 的与 Ruby 的 yield 是一样,Ruby 中 yield 是被传入代码块的占位符。Scala 中的 ...

月下独酌100
2016/04/06
26
0
Scala 的 yield 例子 (for 循环和 yield 的例子)

我看了《Programming in Scala》一书,仍然对 Scala yield 关键字的理解不甚清楚。起初我以为 Scala yield 的与 Ruby 的 yield 是一样,Ruby 中 yield 是被传入代码块的占位符。Scala 中的 ...

Zero零_度
2016/08/16
7
0
Using Prepared Statements

Overview of Prepared Statements Sometimes it is more convenient to use a object for sending SQL statements to the database. This special type of statement is derived from the mo......

Oscarfff
2016/06/23
17
0
Scala IDE for Eclipse 2.0 Beta4 发布

Eclipse IDE for Scala 发布了第四个 beta 版本,支持 Scala 2.9.0.Final 编译器。 这是一个小升级版本,主要改进: A crash when using an empty Java Compiler Task tag list Better compl...

红薯
2011/05/13
630
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象接口多态

第3天 面向对象 今日内容介绍  接口  多态  笔记本案例 今日学习目标  写出定义接口的格式  写出实现接口的格式  说出接口中成员的特点  接口和抽象类的区别  能够说出使用多...

stars永恒
21分钟前
2
0
摄像头基础介绍

一、摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中...

天王盖地虎626
21分钟前
2
0
浅谈一致性Hash原理及应用

在讲一致性Hash之前我们先来讨论一个问题。 问题:现在有亿级用户,每日产生千万级订单,如何将订单进行分片分表? 小A:我们可以按照手机号的尾数进行分片,同一个尾数的手机号写入同一片/...

Java干货分享
43分钟前
3
0
React SSR样式及SEO的实践

前一篇主要记录了一下SSR配置以及结合Redux的使用。这里简单说一下React SSR中样式处理和更优雅的SEO SSR样式 在React客户端渲染,添加样式很容易。写一个css样式文件,在对应组件中引用。标...

前端小攻略
50分钟前
5
0
华为手机太猛!余承东吹的牛今天都实现了

华为是世界上少有的在2B和2C领域同时取得成功公司。如今,华为消费者业务的营收,已经在华为总营收中占据“半壁江山”。 12月27日,华为董事长郭平在新年致辞中披露,预计2018年华为预计实现...

linux-tao
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部