If 表达式有返回值
你可以这样赋值,
val s = if (x > 0) 1 else -1
这样就不必像下面这样,这里s就必须是一个变量了。
if (x > 0) s = 1 else s = -1
你甚至可以根据情况返回不同类型的值
if (x > 0) "OK" else -1
语句结束不用分号
除非多个语句在一行出现,比如
if (n > 0) { r = r * n; n -= 1 }
语句块赋值
之前已经提到了,可以使用大括号包含一个语句块,从而实现比较复杂的计算然后赋值。
val distance = { val dx = x - x0; val dy = y - y0; sqrt(dx * dx + dy * dy) }
简单循环
简单while
def gcdLoop(x: Long, y: Long): Long = {
var a = x
var b = y
while (a != 0) {
val temp = a
a=b%a
b = temp
}
b
}
简单for循环
for (i <- 1 to 4)
println("Iteration "+ i)
高级的For循环
加入Filter
val filesHere = (new java.io.File(".")).listFiles
for (file <- filesHere if file.getName.endsWith(".scala"))
println(file)
多个生成器
def grep(pattern: String) =
for (
file <- filesHere
if file.getName.endsWith(".scala");
line <- fileLines(file)
if line.trim.matches(pattern)
) println(file +": "+ line.trim)
异常
Scala基本沿用Java的异常。但是没有checked exception,捕捉异常可以使用灵活的模式匹配
try {
process(new URL("http://horstmann.com/fred-tiny.gif"))
} catch {
case _: MalformedURLException => println("Bad URL: " + url)
case ex: IOException => ex.printStackTrace()
}
和其他Scala控制结构一样,try-catch-finally是有返回值的。下面的例子教你如何在异常发生时返回一个默认值。注意的时finally通常用来做资源回收,不要依赖finally返回值。
def urlFor(path: String) =
try {
new URL(path)
} catch {
case e: MalformedURLException =>
new URL("http://www.scala-lang.org")
}
相关推荐
1. **语言指南**:这部分详细解释了Scala的基本语法、控制结构、类与对象、函数、模式匹配等核心概念,是学习Scala语法的起点。 2. **标准库文档**:展示了Scala库中各种类和方法的API,包括集合库、并发工具、IO...
【标题】"Scala-DDD-Base-Core_2.10-0.1.23.zip" 是一个基于Scala编程语言的领域驱动设计(DDD)基础框架的版本压缩包,适用于Scala 2.10环境。这个框架的核心目标是提供一个结构化的方法来构建复杂的企业级应用程序...
- **控制结构**:提供if-else语句、for循环等基本控制结构。 - **函数式编程**:支持高阶函数、模式匹配等函数式编程特性,这些特性对于编写高效、可维护的Spark程序至关重要。 #### Spark与Scala的集成 - **环境...
本篇将详细讲解Scala的基础语法,包括变量与常量、数据类型、算术运算与操作符重载,以及控制结构语句和方法与函数的使用。 首先,让我们从Scala的基础语法开始。在Scala中,注释与Java类似,支持单行注释(以`//`...
8. **框架和库支持**:Scala插件不仅支持基础的Scala语言特性,还涵盖了各种Scala库和框架,如Akka、Play Framework、Spark等,使开发更加便捷。 9. **代码模板**:预设的代码模板可以帮助开发者快速生成常见的...
首先,Scala的包管理类似于Java,用于组织和管理类,避免名称冲突并提供访问控制。包的命名遵循一定的规则,如只允许数字、字母、下划线和小圆点,并且不能以数字开头,不应使用关键字。推荐的命名规范是小写字母加...
3. **模式匹配**:Scala中的模式匹配是一种强大的控制流构造,可以用于解构复杂数据结构。例如,`case (a, b) => a + b` 是一个简单的模式匹配例子。 4. **高阶函数**:函数在Scala中是第一类公民,可以作为参数...
1. **基础语法**:介绍Scala的基本数据类型、变量、操作符、流程控制语句等,这是所有编程语言的基础,也是理解Scala的起点。 2. **函数式编程**:Scala的强大之处在于它的函数式编程特性,如高阶函数、闭包、柯里...
在Scala中,模式匹配是一种强大的控制结构,允许我们基于值的结构来执行不同的代码块。例如,我们可以使用`case`关键字进行模式匹配,这在处理枚举类型、解析数据或解构复杂对象时非常有用。 ```scala val x = 42 x...
#### 四、Scala控制结构 - **循环结构**:包括`while`循环、`do-while`循环以及`for`循环等。 - `while`循环:通过代码示例展示了如何使用`while`循环进行迭代。 - `do-while`循环:通过代码示例展示了如何使用`...
本书通过具体的示例和代码片段,展示了如何在Scala中实现并发控制,包括使用Actor模型来处理并发任务,以及如何设计可伸缩的并发程序结构。 值得注意的是,本书不仅是一本教程,更是一本深入探讨Scala特性和功能的...
Scala 的控制结构非常灵活,提供了很多有用的特性,如递归、返回、for 循环和 for 推导、require 和断言等。这些特性可以帮助我们编写更加简洁和高效的代码。 Scala 的函数式编程模型非常强大,提供了很多有用的...
- **版本控制**:管理数据结构的变化。 - **迁移脚本**:升级数据结构时使用。 - **兼容性**:保持向后兼容的同时引入新特性。 ##### 3.10 持久化查询 - **查询机制**:查询 Actor 的历史状态。 - **聚合数据**:从...
2.2 Scala基础 这部分未提供具体内容,但通常会涵盖Scala的基础语法,如变量声明、数据类型、控制流语句、类和对象等。 2.3 面向对象编程基础 虽然Scala是一门多范式语言,但它完全支持面向对象编程。这一部分可能...
2. **新特性引入**:可能包括了新的语言特性和API更新,例如更好的类型推断、新的控制结构或改进的错误消息。 3. **稳定性增强**:修复了已知的bug,提升了平台的稳定性和可靠性,确保在生产环境中更加健壮。 4. *...
#### Scala基础语法 - **变量声明**: - Scala中声明变量使用`val`(用于不可变变量)或`var`(用于可变变量)。与Java相比,Scala更简洁,例如,`var age = 28`。 - **常量声明**: - 使用`val`关键字声明常量...
8. 模式匹配:Scala的模式匹配是一种强大的控制流结构,类似于switch语句,但功能更加强大和灵活。它可以匹配任意类型的数据,使用守卫(guard)来增加匹配条件,匹配类型等。 9. case class:case class是Scala...
4. **学习与扩展**:分析源代码,理解每个部分的作用,尝试添加新的功能或修改现有行为,以此加深对Play和Scala的理解。 综上所述,`play-scala-rest-api-example`是一个极好的学习资源,可以帮助开发者快速掌握...
### Scala基础知识概述 #### 一、Scala语言简介 Scala是一种多范式的编程语言,它结合了面向对象编程和函数式编程的特点。Scala运行在Java平台上,兼容Java代码,并且能够利用JVM的强大功能。Scala的设计目标是简洁...
在Play Framework 2.7.x中,Akka Streams被集成作为处理流的基础库。通过Akka Streams,我们可以创建、组合和操作数据流。在示例中,可能会有一个控制器方法创建一个`Source`,该`Source`从某个数据源(如数据库或...