Urlaub -> Scala (4)
Scala
Nachdem ich in den letzten Tagen ja einiges Interessante über Scala gelernt habe, beschäftige ich mich heute mit if else und for.
Was soll da schon passieren ??
Kategorie Nachdem ich in den letzten Tagen ja einiges Interessante über Scala gelernt habe, beschäftige ich mich heute mit if else und for.
Was soll da schon passieren ??
OK, erste Übung ->
if (1 == 1) println("True") else println("False")
if (1 == 2) println("True") else println("False")
Ausgabe ist wie erwaretet
True
False
Nächste Übung ->
val i : Int = if (1 == 1) 3 else
val j : Int = if (1 == 2) 3 else 4
Häh?!
Jol, der if/else verhält sich wie der ?: in Java oder C#
So nun for
for{ i <- 1 to 3 } println(i)
OK, alles im grünen Bereich, aber der nächste ist schon cool
for{ i <- 1 to 3; j <- 1 to 3 } println(i*j)
Keine geschachtelten for mehr und man weiß nicht mehr wie weit man einrücken soll
Jetzt schnell eine Funktion definiert ->
def isOdd(in : Int) = in % 2 == 1
Und was stellen wir damit an ? Wir benutzen Sie als Filter
for{ i <- 1 to 3; j <- 1 to 3 if isOdd(i*j) } println(i + "/" + j + " = " + i*j)
Meine Fresse ist schon cool, aber vom Hocker reist es einen jetzt nicht wirklich oder?
Jetzt kommt der yield
var lst = for{ i <- 1 to 3; j <- 1 to 3 if isOdd(i*j) } yield { println(i + "/" + j + " = " + i*j); i*j }
println(lst)
Wird der Code Block von einem yield eingeleitet, dann wird über der Compiler angewiesen die Ergebnisse der einzelnen Durchläufe zu sammeln und am Ende in einer Range zurückzugeben
RangeG(1, 3, 3, 9)
und jetzt meine persönliches Superfeature ->
for{ k <- lst } println( "*" + k)
Wobei ich sagen muß, dass ich über den Output noch ein wenig nachdenken muß
1/1 = 1
*1
1/3 = 3
*3
3/1 = 3
*3
3/3 = 9
*9
Gruß JJR
P.S.: Wobei ich momentan annehme, dass es etwas mit Call-By-Name zu tun hat
if (1 == 1) println("True") else println("False")
if (1 == 2) println("True") else println("False")
Ausgabe ist wie erwaretet
True
False
Nächste Übung ->
val i : Int = if (1 == 1) 3 else
val j : Int = if (1 == 2) 3 else 4
Häh?!
Jol, der if/else verhält sich wie der ?: in Java oder C#
So nun for
for{ i <- 1 to 3 } println(i)
OK, alles im grünen Bereich, aber der nächste ist schon cool
for{ i <- 1 to 3; j <- 1 to 3 } println(i*j)
Keine geschachtelten for mehr und man weiß nicht mehr wie weit man einrücken soll
Jetzt schnell eine Funktion definiert ->
def isOdd(in : Int) = in % 2 == 1
Und was stellen wir damit an ? Wir benutzen Sie als Filter
for{ i <- 1 to 3; j <- 1 to 3 if isOdd(i*j) } println(i + "/" + j + " = " + i*j)
Meine Fresse ist schon cool, aber vom Hocker reist es einen jetzt nicht wirklich oder?
Jetzt kommt der yield
var lst = for{ i <- 1 to 3; j <- 1 to 3 if isOdd(i*j) } yield { println(i + "/" + j + " = " + i*j); i*j }
println(lst)
Wird der Code Block von einem yield eingeleitet, dann wird über der Compiler angewiesen die Ergebnisse der einzelnen Durchläufe zu sammeln und am Ende in einer Range zurückzugeben
RangeG(1, 3, 3, 9)
und jetzt meine persönliches Superfeature ->
for{ k <- lst } println( "*" + k)
Wobei ich sagen muß, dass ich über den Output noch ein wenig nachdenken muß
1/1 = 1
*1
1/3 = 3
*3
3/1 = 3
*3
3/3 = 9
*9
Gruß JJR
P.S.: Wobei ich momentan annehme, dass es etwas mit Call-By-Name zu tun hat