文档章节

Scala if Statements and for Loop

秋风醉了
 秋风醉了
发布于 2015/12/20 23:39
字数 408
阅读 72
收藏 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=============

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 232
博文 574
码字总数 405033
作品 0
朝阳
程序员
org.apache.spark.SparkException: Task not serializable

我在实现spark从kafka里读取数据,然后入Mongodb,出现以下的问题: org.apache.spark.SparkException: Task not serializable at org.apache.spark.util.ClosureCleaner$.ensureSerializab......

龙爱李
2015/03/28
3.5K
3
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
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
603
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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
8分钟前
0
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
42分钟前
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
0
0
openJDK之sun.misc.Unsafe类CAS底层实现

注:这篇文章参考了https://www.cnblogs.com/snowater/p/8303698.html 1.sun.misc.Unsafe中CAS方法 在sun.misc.Unsafe中CAS方法如下: compareAndSwapObject(java.lang.Object arg0, long a......

汉斯-冯-拉特
今天
2
0
设计模式之五 责任链模式(Chain of Responsibility)

一. 场景 相信我们都有过这样的经历; 我们去职能部门办理一个事情,先去了A部门,到了地方被告知这件事情由B部门处理; 当我们到了B部门的时候,又被告知这件事情已经移交给了C部门处理; ...

JackieRiver
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部