2017-04-26 5 views
0

私はこの領域を初めて使い、基本的なことを試していましたが、単純な可変スコープの問題に悩まされました。スカラー変数のスコープを定義します

以下のコードでは、プログラムから「アイテム」を使い、その値を印刷したいと考えています。しかし、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:単位=() RES1:単位=() セット(B、C) RES2:単位=()

B C res3:ユニット=()

ヌル //最後にかかりますforeachループの結果

答えて

1

foreachの中で、同じ名前の新しい変数を作成しているので、最初のitemの存在を「陰」にします。

x =>は、後に続く匿名関数に渡されるパラメータに名前を付ける構文です。

あなたはこれに似た何かをしたいようですね

...

set2.foreach{x => item = x; if (item != "A") println(item)} 
関連する問題