Scala 变量

Scala 变量

变量只是保留内存位置以存储值。这意味着当你创建一个变量时,你在内存中保留了一些空间。

根据变量的数据类型,编译器分配内存并决定可以存储在保留内存中的内容。因此,通过将不同的数据类型分配给变量,您可以在这些变量中存储整数、小数或字符。

变量声明

Scala有一种不同的语法来声明变量。它们可以被定义为value(即常量)或variable(变量)。在这里,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支持多重赋值。如果一个代码块或方法返回一个元组(Tuple – 包含不同类型的对象的集合),这个元组可以赋值给一个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中的变量根据使用的位置可以具有三种不同的作用域。它们可以作为字段、方法参数和局部变量存在。下面是每种作用域的详细信息。

字段

字段是属于对象的变量。字段可以从对象的每个方法内部访问。根据字段声明的访问修饰符,字段也可以在对象外部访问。对象字段可以是可变类型和不可变类型,并且可以使用 varval 进行定义。

方法参数

方法参数是用于在调用方法时传递值的变量。方法参数只能从方法内部访问,但是传入的对象如果在方法外部有一个对该对象的引用,则可以从外部访问。方法参数总是不可变的,可以使用 val 关键字进行定义。

局部变量

局部变量是在方法内部声明的变量。局部变量只能从方法内部访问,但是如果从方法返回它们,则所创建的对象可能会逃离方法。局部变量可以是可变类型和不可变类型,并可以使用 varval 进行定义。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程