【发布时间】:2013-10-13 18:50:53
【问题描述】:
Scala 有一个奇怪的缺点,我无法在 args 中创建默认参数。这是我最近的尝试:
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
线程“main”中的异常 java.lang.NullPointerException at scala.collection.mutable.ArrayOps$ofRef$.length$extension(ArrayOps.scala:114) 在 scala.collection.mutable.ArrayOps$ofRef.length(ArrayOps.scala:114) 在 scala.collection.SeqLike$class.size(SeqLike.scala:106) 在 scala.collection.mutable.ArrayOps$ofRef.size(ArrayOps.scala:108) 在 scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69) 在 scala.collection.mutable.ListBuffer.sizeHint(ListBuffer.scala:45) 在 scala.collection.TraversableLike$class.to(TraversableLike.scala:628) 在 scala.collection.mutable.ArrayOps$ofRef.to(ArrayOps.scala:108) 在 scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:257) 在 scala.collection.mutable.ArrayOps$ofRef.toList(ArrayOps.scala:108) 在 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) 在 scala.App$$anonfun$main$1.apply(App.scala:71) 在 scala.App$$anonfun$main$1.apply(App.scala:71) 在 scala.collection.immutable.List.foreach(List.scala:318) 在 scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32) 在 scala.App$class.main(App.scala:71) 在 Main$.main(Main.scala:1) 在 Main.main(Main.scala)
【问题讨论】:
-
我不认为它是一个“奇怪的缺点”。始终提供参数,但它可以为空。如果您对空参数不满意,则由您的代码负责实现其余逻辑。
标签: scala nullpointerexception