- Scala Tutorial
- Scala - Home
- Scala - Overview
- Scala - Environment Setup
- Scala - Basic Syntax
- Scala - Data Types
- Scala - Variables
- Scala - Classes & Objects
- Scala - Access Modifiers
- Scala - Operators
- Scala - IF ELSE
- Scala - Loop Statements
- Scala - Functions
- Scala - Closures
- Scala - Strings
- Scala - Arrays
- Scala - Collections
- Scala - Traits
- Scala - Pattern Matching
- Scala - Regular Expressions
- Scala - Exception Handling
- Scala - Extractors
- Scala - Files I/O
- Scala Useful Resources
- Scala - Quick Guide
- Scala - Useful Resources
- Scala - Discussion
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定义。