Определить область действия переменной scala
Я новичок в этой области и пробовал основные вещи, но застрял в простой переменной области видимости.
В этом коде ниже я хочу использовать "элемент" в программе и вывести его значение. Но хотя я использую "элемент" внутри цикла foreach, он рассматривает его как локальную переменную, и его значение не доступно вне цикла.
Не могли бы вы сообщить мне, где я не прав?
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)
Результат:
true res0: Единица = () A res1: Единица = () Set(B, C) res2: Единица = ()
B C res3: Единица = ()
// ожидание того, что он примет последний результат цикла foreach
1 ответ
В пределах foreach
вы создаете новую переменную с тем же именем, чтобы она "затеняла" существование первой item
,
x =>
это синтаксис для именования параметров, передаваемых анонимной функции, которая следует.
Похоже, вы хотите что-то похожее на это...
set2.foreach{x => item = x; if (item != "A") println(item)}