通常,scala中for表达式有如下形式:
for ( seq ) yield expr
seq是一个生成器,变量定义,过虑器的序列,序列元素用分号分隔,下面是一个for表达式的例子:
for (p <- persons; n = p.name; if (n startsWith "To"))
yield n
也可以使用大括号来代替圆括号,那么分号就变成了可选项:
for {
p <- persons // a generator
n = p.name // a definition
if (n startsWith "To") // a filter
} yield n
生成器的结构如下:
pat <- expr
定义的结构如下:
pat = expr
过滤器的结构如下:
if expr
这里expr是一个布尔类型的表达式
另外,一个for表达式中可以有多个生成器,如下示例:
scala> for (x <- List(1, 2); y <- List("one", "two"))
yield (x, y)
res0: List[(Int, java.lang.String)] = List((1,one), (1,two), (2,one), (2,two))
分享到:
相关推荐
Scala 正则表达式是 Scala 语言中的一种强大工具,用于模式匹配和字符串处理。在 Scala 中,正则表达式可以通过两种方式创建:通过 `r` 方法直接将字符串转换成正则表达式对象,或者直接显式地调用 `Regex` 构造函数...
标题“scala-2.12.1 for Linux”表明我们讨论的是Scala的特定版本2.12.1,这个版本是为Linux操作系统设计的。Scala的版本号通常遵循主版本号.次要版本号.修订版本号的格式,这里的2.12.1意味着这是一个稳定版本,...
也可以使用for表达式来匹配字符串: ```scala val regex = "hello".r val str = "hello world" for (regex(x, y) (str)) println(x, y) ``` 写入文本文件 在Scala中,可以使用java的PrintWriter对象来写入文本文件...
说明:.r()方法简介:Scala中将字符串转换为正则表达式 /** You can follow a string with `.r`, turning it into a `Regex`. E.g. * * `"""A\w*""".r` is the regular expression for identifiers starting wi
Scala编译器在处理运行时类型的过程中,会编译类型表达式、多态方法和类,以及实例化方法和类型构造器。 - **Compiling type expressions**:编译类型表达式以在运行时保留足够的信息,供模式匹配和反射使用。 - **...
《Scala for the Impatient》第二版不仅是一本优秀的Scala入门书籍,也是Scala程序员日常工作中不可或缺的参考书之一。通过阅读本书,读者不仅可以学到Scala的基础知识,还能够了解到如何利用Scala的高级特性解决...
控制结构如if、while和for表达式允许编写条件和迭代逻辑。闭包是一个函数,它可以引用定义它的作用域中的变量。 书中还涉及了Scala的包和引用,以及如何在UNIX和WINDOWS系统上使用Scala脚本。此外,书中包含了术语...
本书《Scala for the impatient》被推荐给新手学习Scala,原因在于Scala的设计目标是让程序员能以更少的代码完成更多的任务,同时保持类型安全。 Scala的语言特性包括: 1. 静态类型系统:Scala拥有静态类型系统,...
6. **表达式和控制流**:包括if表达式、for循环、case类和match语句等。 7. **宏和元编程**:介绍Scala的宏系统,用于编写更高级的代码生成和优化工具。 而"Programming in Scala"则是由Martin Odersky(Scala的...
例如,if表达式和for循环都可以直接返回结果。 9. **Case类和Case对象**:Scala中的Case类和Case对象简化了模式匹配和数据表示,常用于创建不可变的、具有元组样式的数据结构。 10. **类型类**:类型类是一种设计...
在解释器中可以执行Scala表达式、定义函数或类等,非常方便用于测试和快速原型开发。此外,Scala解释器还支持一些特殊的命令,比如`:q`或`:quit`用于退出解释器,`:paste`则用于粘贴多行代码。 #### Scala作为脚本...
- **for表达式**: 深入理解Scala中的for表达式和其语法糖。 #### 抽取器 - **抽取器基础**: 学习如何使用抽取器来简化模式匹配。 #### 标注 - **元数据**: 使用标注来添加元数据到Scala代码中。 #### 使用XML - *...
- **For表达式**:Scala的`for`循环使用`yield`关键字生成序列,`for (i )`生成1到10的区间。 **Scala函数特性**: - **定义函数**:函数可以有参数、返回值,函数体最后一行表达式的值即为返回值。 - **匿名函数**...
2. 表达式、类型和值:包括对Scala中的表达式进行深入解析,如何定义和使用类型以及值的处理方式。比如在"Expressions, Types, and Values"章节中会介绍字面量对象、对象字面量以及复合表达式的概念。 3. 对象和类...
Scala还提供了多种控制结构,如While循环表达式、Do循环表达式、For语句段、Return表达式、Throw表达式、Try表达式等。 模式匹配是Scala中的一个核心概念,它允许程序员按照模式来检查数据。模式匹配包括变量模式、...
3. 条件表达式和循环表达式:Scala中的条件表达式使用if进行,循环表达式支持for循环,但Scala没有break和continue关键字。在需要提前退出循环时,通常使用返回值和函数式编程技巧来实现。 4. 类和对象:Scala中类...