У меня есть приложение, которое использует черту App
, и все работает нормально.Но object
, который наследуется от App
, становится немного громоздким, поэтому я хотел бы разделить некоторые функции на черты.В частности, я бы хотел выделить обработку аргументов командной строки.
К сожалению, это не очень хорошо работает с DelayedInit
.Так что это прекрасно работает:
object Main extends App {
println("arguments are: "+ args.mkString.mkString(", "))
}
но это выдает NullPointerException
:
trait CommandLineArguments { this: App =>
println("arguments are: "+ args.mkString.mkString(", "))
}
object Main extends App with CommandLineArguments
Есть ли способ получить DelayedInit
, чтобы "включить" смешанные черты?