nicht return
Verwenden Sie, wenn Sie return
Kontrolle der Ausführung verwenden die Funktion und den gesamten Code nach der return-Anweisung verlassen wird nicht erreichbar sein
Code nach Rückgabe wird nicht erreichbar sein
def foo: Int = {
return 1
2 + 3 //unreachable
}
Bei if Ausdruck
def bar: Int = {
if (true) {
return 1
} else {
return 2
}
1 + 2 //unreachable
}
In Scala return-Anweisung ist optional und nicht empfohlen, da es nicht funktionelle Praxis Codierung prüfen.
Der Wert des letzten Ausdrucks im Codeblock ist der Rückgabewert in Scala. Also keine Sorge über explizite Rückkehr lass es einfach auf das Programm
val flag = if (x.toString.split("/").last.split("_").last.toLong < System.currentTimeMillis) {
println("considered " + x)
LIST += x.toString
true //removed return
} else {
println("NOT considered " + x)
false // removed return
}
das Programm Aufhalten der Ausführung durch das Auslösen einer Ausnahme oder durch Wert zurückgegeben oder durch einen expliziten Aufruf Ausgang ist nicht funktional, Dinge zu tun. Scala erlaubt es leider. Aber wenn Sie ein guter Bürger der funktionalen Welt sein wollen. Sie vermeiden es besser.
Vermeiden wandelbar Sammlungen
Verwenden mutable
Sammlungen, wenn Sie haben ein starkes Bedürfnis danach. Es gibt Vorteile von immutable
Sammlungen
1) Sie sind Thread-Safe.
2) Fehlerfrei (keine Überraschungen durch zufällige Mutationen und keine Blockierung).
3) Referentielle Transparenz.
4) Angemessene Leistung.
Verwenden Sie immutable
Liste statt mutable
Liste.
Verwenden Scala Lambda-Notation und syntaktischer Zucker
syntaktischer Zucker ist es für einen Grund. Syntaktischer Zucker reduziert den Standardcode. Damit Ihr Code klar, sauberer und besser aussieht. Hilft bei der Pflege des Codes. Code bleibt für längere Zeit fehlerfrei.
Anstelle der Function1
Eigenschaft Lambda-Notation verwenden.
scala> val f = new Function1[String, String] { def apply(str: String): String = str}
f: String => String = <function1>
scala> val f = {str: String => str}
f: String => String = <function1>
So Ihr Code wird
val paths = List[Path]() //assume you have Paths in it.
val filter = {path: Path => path.toString.split("/").last.split("_").last.toLong < System.currentTimeMillis }
val resultList = paths.filter(filter)
Sie müssen wirklich Ihren Code besser zu formatieren. Diese Run-Onlines sind schmerzhaft zu lesen. – Carcigenicate
Humor mich; hast du 'System.out.println ("schaut in" + x)' ausprobiert? –
Bitte nehmen Sie jedes einzelne Semikolon in Ihrem Skript und fügen Sie es wieder ein. Eine Anweisung = eine Zeile – Tim