Scala变量的范围
Scala变量范围
变量的范围是代码块,直到可以在变量的范围内使用变量为止。可以对其执行任何操作,但是在范围之外访问它会产生错误。
例:
def add(){
var sum = 5+13
} println(sum)上面的示例将给出错误,因为总和的范围在add()函数之内,并且程序正在外部使用它,这是不允许的。
在Scala编程中,存在三种类型的变量。他们是:
领域
方法参数
局部变量
领域
字段是在类即类中定义的变量。在类主体内部定义的变量称为字段。字段可由类内部定义的任何方法使用,因此您也可以使用类的对象访问字段。根据对象的访问修饰符,允许该对象访问字段。这些访问修饰符允许或禁止任何成员,对象或子类访问指定字段。
例如:
对于类,可能会有一个私有变量。可以从该类的任何其他方法访问此私有变量,但该类的对象将无法访问它。
码:
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