Не используйте возврат товара
При использовании return
контроль исполнения оставит функцию и весь код после оператора возврата не будет достижимым
код после возврата будет недоступен
В случае, если выражение
def bar: Int = {
if (true) {
return 1
} else {
return 2
}
1 + 2 //unreachable
}
В обратном заявлении Scala является обязательным и не рекомендуется, так как его не рассматривать функциональную практику кодирования.
Значение последнего выражения в кодовом блоке - это возвращаемое значение в Scala. Так что не беспокойтесь о явном возвращении просто оставить его в программу
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
}
останавливая программу выполняющейся, бросая исключение или путем возврата значения или явный вызов выхода не работает способ делать вещи. К сожалению, Scala это позволяет. Но если вы хотите быть хорошим гражданином функционального мира. Лучше избегай этого.
Избегайте изменяемые коллекции
Используйте mutable
коллекции, если у вас есть сильная потребность в нем. Имеются преимущества immutable
коллекции
1) Они являются потокобезопасными.
2) Исправлена ошибка (без сюрпризов случайными мутациями и без блокировки).
3) Ссылочная прозрачность.
4) Разумная производительность.
Использовать список immutable
вместо mutable
.
Использование Scala лямбда обозначения и синтаксический сахар
синтаксический сахар там по причине. Синтаксический сахар снижает код шаблона. Чтобы ваш код выглядел ясным, чище и лучше. Помогает в ремонтопригодности кода. Код остается без ошибок в течение более длительного времени.
Вместо Function1
признак использование лямбда обозначения.
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>
Так что ваш код становится
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)
Вам действительно нужно отформатировать код лучше. Эти пробелы - это боль, которую нужно читать. – Carcigenicate
Юмор меня; вы пробовали «System.out.println (« глядя в «+ x»)? –
Пожалуйста, выньте каждую точку с запятой в свой скрипт и вставьте ее снова. Один оператор = одна строка – Tim