2017-04-26 3 views
0

Ich bin neu in diesem Bereich und versuchte grundlegende Dinge, aber steckte in einem einfachen Variable Umfang Problem.Definieren einer Scala Variable Scope

In diesem unteren Code möchte ich "Element" durch das Programm verwenden und es Wert drucken möchten. Aber während ich "Gegenstand" innerhalb einer foreach Schleife verwende, betrachte es es als lokale Variable und sein Wert ist außerhalb der Schleife nicht verfügbar.

Könnten Sie bitte lassen Sie mich wissen, wo ich falsch liege?

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) 

Ergebnis:

wahr res0: Einheit =() A res1: Unit =() Set (B, C) res2: Einheit =()

B C res3: Einheit =()

null // erwartet, dass es dauern wird Ergebnis der foreach Schleife

Antwort

1

Innerhalb der foreach erstellen Sie eine neue Variable mit dem gleichen Namen, so dass es die Existenz der ersten "Schatten" item.

x => ist die Syntax für die Benennung der Parameter, die an die folgende anonyme Funktion übergeben werden.

Es klingt wie Sie etwas Ähnliches wie diese wollen ...

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