📜  Scala中的变量范围

📅  最后修改于: 2022-05-13 01:55:08.619000             🧑  作者: Mango

Scala中的变量范围

变量声明指定将存储在内存中的变量的名称,并且可以使用此变量名称进一步访问内存。 Scala 变量的作用域有三种类型。

  • 字段。
  • 方法参数。
  • 局部变量。

让我们详细讨论它们中的每一个。

字段

如果我们使用正确的访问修饰符声明它们,我们可以从对象中的每个方法和对象外部访问这些类型的变量。字段可以是mutableimmutable ,它们可以使用'var''val'定义它们。
例子:

// Scala program of field 
// scope for Scala variable
  
// class created with field 
// variables x and y.
class disp 
{
    var x = 10.3f
    var y = 7f
    def windet() 
    {
        println("Value of x : "+x)
    }
        println("Value of y : "+y);
}
  
object Example 
{
    // Main method
    def main(args:Array[String]) 
    {
        val Example = new disp()
        Example.windet()
    }
}

输出:

Value of y : 7.0
Value of x : 10.3

上例显示 disp 类是使用字段变量 x 和 y 创建的。这些变量可以在方法内部访问,并通过创建引用从对象调用它。因此下面是获得的输出。

方法参数

当我们想要在调用方法时传递一个值时,我们会使用这些变量。如果有从方法外部对对象的引用,则可以在方法内部和外部方法访问它们。这些变量总是可变的 使用'val'关键字。

例子:

// Scala program of Method 
// scope for Scala variable
  
// class created with Method 
// variables s1 and s2.
class rect 
{
    def mult(s1: Int, s2: Int)
    {
        var result = s1 * s2
       println("Area is: " + result);
    }
}
  
object Area 
{
    // Main method
    def main(args:Array[String])
    {
        val su = new rect()
        su.mult(5, 10)
    }
}

输出:

Area is: 50

上面的示例显示了使用mult method创建的rect class ,该方法接受两个方法参数变量 s1 和 s2。创建区域对象并通过将值传递给变量 s1 和 s2 来调用 rect 方法。因此,下面是获得的输出。


局部变量

这些类型的变量在方法内声明并且只能在方法内访问。使用'var''val'关键字,这些变量可以是mutable 和 immutable

例子:

// Scala program of Method 
// scope for Scala variable
  
// class created with Local
// variables s1 and s2.
class Area 
{
    def mult() 
    {
        var(s1, s2) = (3, 80);
        var s = s1 * s2;
        println("Area is: " + s)
    }
}
  
object Test 
{
    // Main method
    def main(args:Array[String]) 
    {
        val ex = new Area()
        ex.mult()
    }
}

输出:

Area is: 240

上面的示例显示类 Area 在方法 mult 内具有局部变量 s1、s2 和 s。这些变量在方法外不可访问。因此获得的输出如下。