- Scala 教程
- Scala - 首页
- Scala - 概述
- Scala - 特性
- Scala - 环境搭建
- Scala - 构建工具 (SBT)
- Scala - 基本语法
- 数据类型和变量
- Scala - 数据类型
- Scala - 变量
- Scala - 字符串
- Scala - 数组
- Scala 运算符
- Scala - 运算符
- Scala - 算术运算符
- Scala - 关系运算符
- Scala - 逻辑运算符
- Scala - 位运算符
- Scala - 赋值运算符
- Scala 条件语句
- Scala - IF ELSE
- Scala 循环语句
- Scala - 循环语句
- Scala - while 循环
- Scala - do-while 循环
- Scala - for 循环
- Scala - break 语句
- Scala 类与对象
- Scala - 类与对象
- Scala - 访问修饰符
- Scala 方法与函数
- Scala - 函数
- Scala - 按名称调用的函数
- Scala - 带命名参数的函数
- Scala - 带变长参数的函数
- Scala - 递归函数
- Scala - 默认参数值
- Scala - 高阶函数
- Scala - 嵌套函数
- Scala - 匿名函数
- 部分应用函数
- Scala - Currying 函数
- Scala 集合
- Scala - 集合
- Scala - 列表
- Scala - 集合
- Scala - 映射
- Scala - 元组
- Scala - 迭代器
- Scala - Option
- Scala 模式匹配
- Scala - 模式匹配
- Scala - 异常处理
- Scala - 提取器
- Scala - 正则表达式
- Scala 文件 I/O
- Scala - 文件 I/O
- Scala 高级概念
- Scala - 闭包
- Scala - 特质
- Scala 有用资源
- Scala - 快速指南
- Scala - 在线编译器
- Scala - 有用资源
- Scala - 讨论
Scala - 变量
变量只不过是保留的内存位置,用于存储值。这意味着当您创建变量时,您会在内存中保留一些空间。
根据变量的数据类型,编译器分配内存并决定可以在保留的内存中存储什么。因此,通过为变量分配不同的数据类型,您可以在这些变量中存储整数、小数或字符。
变量声明
Scala 声明变量的语法不同。它们可以定义为值,即常量或变量。这里,myVar 使用关键字 var 声明。它是一个可以更改值的变量,这称为**可变变量**。以下是使用**var**关键字定义变量的语法:
语法
var myVar : String = "Foo"
这里,myVal 使用关键字 val 声明。这意味着它是一个不能更改值的变量,这称为**不可变变量**。以下是使用 val 关键字定义变量的语法:
语法
val myVal : String = "Foo"
变量数据类型
变量的类型在变量名之后和等号之前指定。您可以通过如下所示提及其数据类型来定义任何类型的 Scala 变量:
语法
val or val VariableName : DataType = [Initial Value]
如果您不为变量分配任何初始值,则如下所示是有效的:
语法
var myVar :Int; val myVal :String;
变量类型推断
当您为变量分配初始值时,Scala 编译器可以根据分配给它的值来确定变量的类型。这称为变量类型推断。因此,您可以像这样编写这些变量声明:
语法
var myVar = 10; val myVal = "Hello, Scala!";
这里,默认情况下,myVar 将是 Int 类型,myVal 将成为 String 类型变量。
多重赋值
Scala 支持多重赋值。如果代码块或方法返回一个元组(**元组** - 包含不同类型对象的集合),则该元组可以赋值给 val 变量。[**注意** - 我们将在后续章节中学习元组。]
语法
val (myVar1: Int, myVar2: String) = Pair(40, "Foo")
类型推断可以正确地推断出类型:
语法
val (myVar1, myVar2) = Pair(40, "Foo")
示例程序
以下是一个示例程序,解释了在 Scala 中声明变量的过程。此程序声明了四个变量——两个变量带有类型声明,其余两个没有类型声明。
示例
object Demo {
def main(args: Array[String]) {
var myVar :Int = 10;
val myVal :String = "Hello Scala with datatype declaration.";
var myVar1 = 20;
val myVal1 = "Hello Scala new without datatype declaration.";
println(myVar); println(myVal); println(myVar1);
println(myVal1);
}
}
将上述程序保存为**Demo.scala**。以下命令用于编译和执行此程序。
命令
\>scalac Demo.scala \>scala Demo
输出
10 Hello Scala with datatype declaration. 20 Hello Scala without datatype declaration.
变量作用域
Scala 中的变量可以根据其使用位置具有三种不同的作用域。它们可以作为字段、方法参数和局部变量存在。以下是每种作用域的详细信息。
字段
字段是属于对象的变量。字段可以从对象的每个方法内部访问。字段也可以根据声明字段的访问修饰符从对象外部访问。对象字段可以是可变类型和不可变类型,并且可以使用**var**或**val**定义。
方法参数
方法参数是变量,用于在调用方法时将值传递到方法中。方法参数只能从方法内部访问,但是如果您从方法外部引用对象,则传递的对象可能可以从外部访问。方法参数始终是不可变的,由**val**关键字定义。
局部变量
局部变量是在方法内部声明的变量。局部变量只能从方法内部访问,但是如果您从方法中返回它们,则创建的对象可能会逃离方法。局部变量可以是可变类型和不可变类型,并且可以使用**var**或**val**定义。