Определить область действия переменной 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)}
Другие вопросы по тегам