Scala - 变量

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

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

变量声明

Scala有一个声明变量的语法不同.它们可以定义为值,即常数或变量.这里,使用关键字var声明myVar.它是一个可以改变值的变量,这被称为可变变量.以下是使用 var 关键字定义变量的语法 :

语法

 
 var myVar:String ="Foo"

这里,使用关键字val声明myVal.这意味着它是一个无法更改的变量,这称为不可变变量.以下是使用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 关键字定义.

局部变量

局部变量是在a内声明的变量方法.局部变量只能从方法内部访问,但是如果从方法返回,则创建的对象可能会转义该方法.局部变量既可以是可变类型也可以是不可变类型,可以使用 var val 来定义.