定义scala变量范围

pbpqsu0x  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(440)

我是这个领域的新手,尝试过一些基本的东西,但遇到了一个简单的变量范围问题。
在下面的代码中,我想在整个程序中使用“item”并打印它的值。但是,当我在foreach循环中使用“item”时,它将其视为局部变量,其值在循环外不可用。
你能告诉我哪里错了吗?

import scala.collection.immutable._

val set1=Set()
val set2=Set("A","B","C")
var item:String=null

println(set1.isEmpty)
println(set2.head)
println(set2.tail)

set2.foreach{item => if (item != "A") println(item)}

println(item)

结果:
真res0:unit=()a res1:unit=()集合(b,c)res2:unit=()
b c res3:单位=()
null//应为foreach循环的最后一个结果

eufgjt7s

eufgjt7s1#

foreach 您正在创建一个同名的新变量,以便它“隐藏”第一个变量的存在 item . x => 用于命名传递给后面匿名函数的参数的语法。
听起来你想要类似的东西。。。

set2.foreach{x => item = x; if (item != "A") println(item)}

相关问题