Scala变量的范围

Scala变量范围

变量的范围是代码块,直到可以在变量的范围内使用变量为止。可以对其执行任何操作,但是在范围之外访问它会产生错误。

例:

    def add(){
	    var sum = 5+13
    }    println(sum)

上面的示例将给出错误,因为总和的范围在add()函数之内,并且程序正在外部使用它,这是不允许的。

在Scala编程中,存在三种类型的变量。他们是:

  1. 领域

  2. 方法参数

  3. 局部变量

领域

字段是在类即类中定义的变量。在类主体内部定义的变量称为字段。字段可由类内部定义的任何方法使用,因此您也可以使用类的对象访问字段。根据对象的访问修饰符,允许该对象访问字段。这些访问修饰符允许或禁止任何成员,对象或子类访问指定字段。

例如:

对于类,可能会有一个私有变量。可以从该类的任何其他方法访问此私有变量,但该类的对象将无法访问它。

码:

class Student
{ 
	var roll = 2343;
	private var totalMarks = 500 // 这不能被对象访问
	def printinfo(mark : Int) 
	{ 
		println("The roll no. of student is "+roll)
		println("百分比为 "+(mark/totalMarks))
	} 
} 

object MyClass
{ 
	def main(args:Array[String]) 
	{ 
	    var s1 = new Student
	    println("call using . operator" + s1.roll)
	    // println("call using . operator" + s1.totalMarks) // 会给出错误
 	    s1.printinfo(345)	    
	} 
}

输出结果

call using . operator2343
The roll no. of student is 2343
百分比为 0

方法参数

参数是在调用方法时传递给方法的那些变量。这些变量只能在定义它们的方法内部访问。

例如:

    def add(a:Int , b:Int){
	    var sum = a+b
    }    println(a)

就像在此代码中一样,变量a和b是传递给函数的参数add()。不能在功能块之外使用它们。这意味着该println()行将给出错误。

码:

class Student
{ 
	var roll = 2343;
	private var totalMarks = 500 // 这不能被对象访问
	def printinfo(mark : Int) 
	{ 
		println("The roll no. of student is "+roll)
		println("百分比为 "+(mark/totalMarks)) // 标记是传递给方法的配方师
	} 
	def printmarks(){	    println(mark)
	}
} 

object MyClass
{ 
	def main(args:Array[String]) 
	{ 
	    var s1 = new Student
	    println("call using . operator" + s1.roll)
	   // println("call using . operator" + s1.totalMarks) // 会给出错误
 	    s1.printinfo(345)
	    
	} 
}

输出结果

/home/jdoodle.scala:11: error: not found: value mark	    println(mark)
                    ^
one error found
Command exited with non-zero status 1

局部变量

变量是在类中定义的那些变量,如果范围也位于定义它们的方法之内。

例如:

    def add(a:Int , b:Int){
	    var sum = a+b
    }    println(sum)

在此示例中,代码尝试访问其范围之外的变量。此局部变量不能在函数外部使用。

码:

class Student
{ 
	var roll = 2343;
	private var totalMarks = 500 // 这不能被对象访问
	def printinfo(mark : Int) 
	{ 
		println("The roll no. of student is "+roll)
		val percent = ((mark/totalMarks)*100)
		println("百分比为 "+(percent)) // 标记是传递给方法的配方师
	} 
	def printmarks(){	    println(percent)
	}
} 

object MyClass
{ 
	def main(args:Array[String]) 
	{ 
	    var s1 = new Student
	    println("call using . operator" + s1.roll)
	   // println("call using . operator" + s1.totalMarks) // 会给出错误
 	    s1.printinfo(345)
	    
	} 
}

输出结果

/home/jdoodle.scala:12: error: not found: value percent	    println(percent)
                    ^
one error found
Command exited with non-zero status 1