Есть код на Java:
@SneakyThrows
public static void main(String[] args) {
Files.walk(Paths.get(args[0]))
.parallel()
.filter(Files::isRegularFile)
.filter(item -> item.toString().endsWith(".bilog"))
.map(path ->
new JavaClassFile(
path,
new BLCodeFile(path).asBytecode()
)
)
.forEach(JavaClass::save);
}
public final class JavaClassFile implements JavaClass
public interface JavaClass {
void save();
}
Хотелось бы написать аналогичный на Scala. Сначала попробовал просто переписать, и не получается вызвать save y trait JavaClass:
def main(args: Array[String]): Unit = {
Files.walk(Paths get args(0))
.parallel
.filter(Files isRegularFile _)
.filter(_.toString endsWith ".bilog")
.map(new JavaClassFile(_, new InsnList))
.forEach(???)
}
final class JavaClassFile(private val path : Path, private val code : InsnList) extends JavaClass {
override def save(): Unit = println(path)
}
trait JavaClass {
def save()
}
Как будет выглядеть аналогичный идиоматический код на Scala?
Можно полностью изменить кусок, оставив логику:
for(file <- new File(args(0)).listFiles if file.getName endsWith ".bilog") {
if (Files.isRegularFile(file.toPath)) {
new JavaClassFile(file.toPath, new InsnList()).save()
}
}
А можно чуть изменить ваш код, добавив информацию по типам:
Files.walk(Paths get args(0))
.parallel
.filter { case x: Path => Files isRegularFile x }
.filter { case x: Path => x.toString endsWith ".bilog"}
.map { case x: Path => new JavaClassFile(x, new InsnList) }
.forEach { case x: JavaClassFile => x.save() }
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть проект система управления СТОВ функционал входит распределение и планирование работ между сотрудниками и "мостами" для ремонта
Я делаю класс активити, в котором аутентификацияУ меня ошибка: