Scala имеет странный недостаток, что я не могу создать аргумент по умолчанию в args
. Вот моя последняя попытка:NullPointerException с созданием массива?
object Main extends java.lang.Object with ScalaObject with App {
override val args:Array[String]=Array(args.toList.headOption.getOrElse("f"))
println("args(0) = " + args(0))
}
Выполнить код здесь: http://ideone.com/B20HBA
Исключение в нити "главного" java.lang.NullPointerException на scala.collection.mutable.ArrayOps $ ofRef $ .length $ extension (ArrayOps.scala: 114) at scala.collection.mutable.ArrayOps $ ofRef.length (ArrayOps.scala: 114) at scala.collection.SeqLike $ class.size (SeqLike.scala: 106) в scala .collection.mutable.ArrayOps $ ofRef.size (ArrayOps.scala: 108) в scala.collection.mutabl e.Builder $ class.sizeHint (Builder.scala: 69) в scala.collection.mutable.ListBuffer.sizeHint (ListBuffer.scala: 45) в scala.collection.TraversableLike $ class.to (TraversableLike.scala: 628) at scala.collection.mutable.ArrayOps $ ofRef.to (ArrayOps.scala: 108) в scala.collection.TraversableOnce $ class.toList (TraversableOnce.scala: 257) at scala.collection.mutable.ArrayOps $ ofRef. toList (ArrayOps.scala: 108) at Main $ delayedInit $ body.apply (Main.scala: 2) в scala.Function0 $ class.apply $ mcV $ sp (Function0.scala: 40) в scala.runtime. AbstractFunction0.apply $ mcV $ sp (AbstractFunction0.scala: 12) at scala.App $$ anonfun $ main $ 1.apply (App.scala: 71) в scala.App $$ anonfun $ main $ 1.apply (приложение. Scala: 71) на scala.collection.immutable.List.foreach (List.scala: 318) в scala.collection.generic.TraversableForwarder $ class.foreach (TraversableForwarder.scala: 32) at scala.App $ class.main (приложение. Скала: 71) в главном $ .main (Main.scala: 1) в Main.main (Main.scala)
Я бы не квалифицировал его как «странный недостаток». Аргумент всегда предоставляется, но он может быть пустым. Это ваш код, чтобы реализовать остальную логику, если вас не устраивают пустые аргументы. –