例如假设我有以下
var lastSecurity = ""
def allSecurities = for {
security <- lastTrade.keySet.toList
lastSecurity = security
} yield security
目前
lastSecurity = security
似乎是在范围内创建一个新变量,而不是修改第一行代码中声明的变量。
答案 0 :(得分:10)
试试这个:
var lastSecurity = ""
def allSecurities = for {
security <- lastTrade.keySet.toList
} yield {
lastSecurity = security
security
}
答案 1 :(得分:1)
就像
var a = 1
{
var a = 2
println(a)
}
println(a)
打印
2
1
这些是var
还是val
并不重要。在Scala中,您可以隐藏外部作用域中的变量,但是当您不得不使用val
关键字时,这可能会导致一些混淆,即for-comprehensions,匿名函数和模式匹配。