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