Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义scala变量范围_Scala_Hadoop_Scala Collections - Fatal编程技术网

定义scala变量范围

定义scala变量范围,scala,hadoop,scala-collections,Scala,Hadoop,Scala Collections,我是这个领域的新手,尝试过一些基本的东西,但遇到了一个简单的变量范围问题 在下面的代码中,我想在整个程序中使用“item”,并想打印它的值。但是,当我在foreach循环中使用“item”时,它将其视为局部变量,其值在循环外不可用 你能告诉我哪里错了吗 import scala.collection.immutable._ val set1=Set() val set2=Set("A","B","C") var item:String=null println(set1.isEmpty) p

我是这个领域的新手,尝试过一些基本的东西,但遇到了一个简单的变量范围问题

在下面的代码中,我想在整个程序中使用“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:单位=() 集合(B,C) res2:单位=()

B C res3:单位=()


null//预计它将在
foreach
中获取foreach循环的最后一个结果。您正在创建一个同名的新变量,因此它会“隐藏”第一个
项的存在

x=>
是用于命名传递给后面的匿名函数的参数的语法

听起来你想要类似的东西

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