Scala 变量的范围
变量声明指定了存储在内存中的变量名称,并且可以通过这个变量名称进一步访问内存。Scala变量有三种类型的范围。
- 字段。
- 方法参数。
- 本地变量。
让我们来详细讨论一下它们中的每一个。
**字段 **
如果我们用正确的访问修饰语声明了这些变量,我们就可以从对象中的每个方法和对象外部访问这些变量。一个字段可以是可变的或不可变的,他们可以用 ‘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
上面的例子显示,rect类创建了mult方法,接受两个方法参数变量s1和s2。区域对象被创建,rect方法通过传递变量s1和s2的值被调用,因此得到的输出如下。
**本地变量 **
这些类型的变量被声明在一个方法中,并且只能在该方法中访问。使用 ‘var ‘和 ‘val ‘关键字,这些变量可以是可变和不可变的。
例子
// 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,这些变量在方法之外不能访问。