在scala中为for循环之外的变量赋值有什么用
所以,我正在尝试Scala中的循环。代码如下在scala中为for循环之外的变量赋值有什么用,scala,for-loop,Scala,For Loop,所以,我正在尝试Scala中的循环。代码如下 valx=5 for(x不仅在scala中,而且在其他编程语言中,局部或内部变量优先于外部级别(例如类/对象)变量 object VarlPrecedence { val name = "object level" def main(args: Array[String]): Unit = { val name = "method level" println(name) } } 输出 method level 在
valx=5
for(x不仅在scala中,而且在其他编程语言中,局部或内部变量优先于外部级别(例如类/对象)变量
object VarlPrecedence {
val name = "object level"
def main(args: Array[String]): Unit = {
val name = "method level"
println(name)
}
}
输出
method level
在您的示例中,内部x
用于在范围内进行迭代。不像您认为外部x
仍然是不可变的,但未使用。Scala的for
循环是语法上的糖分,它可以分解为以下内容(或多或少):
这(同样本质上)相当于:
val x = 5
val myFunc: Int => Unit = { x =>
println("the value is" + x)
}
(1 until 10).foreach(myFunc)
该语法更清楚地表明,x
是一个新的变量,它在函数定义引入的新范围内隐藏外部x
简而言之,两个x
变量是完全不同的,因为它们的作用域不同,如果在for
循环后打印x
,您仍然会得到5
您的问题已经说到点子上了。x
在循环中没有用处,并且始终是5
的值。但是,for-“理解”引入了一个新的作用域,创建了一个新的val x
,它在每次迭代中都绑定到连续的值。val x=5
是死代码,它对任何事情都没有好处。只需移除它,输出将保持不变。问题中没有任何迹象表明第一个x
是类级变量,以及t是否真的相关重要的是for
循环引入了一个新的范围。
val x = 5
(1 until 10).foreach { x =>
println("the value is" + x)
}
val x = 5
val myFunc: Int => Unit = { x =>
println("the value is" + x)
}
(1 until 10).foreach(myFunc)