gpt4 book ai didi

scala - 数组创建时出现 NullPointerException?

转载 作者:行者123 更新时间:2023-12-05 05:27:31 26 4
gpt4 key购买 nike

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

Exception in thread "main" java.lang.NullPointerException at 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) at scala.collection.mutable.ArrayOps$ofRef.size(ArrayOps.scala:108) at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69) at scala.collection.mutable.ListBuffer.sizeHint(ListBuffer.scala:45) at scala.collection.TraversableLike$class.to(TraversableLike.scala:628) at scala.collection.mutable.ArrayOps$ofRef.to(ArrayOps.scala:108) at 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) at scala.Function0$class.apply$mcV$sp(Function0.scala:40) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) at scala.App$$anonfun$main$1.apply(App.scala:71) at scala.App$$anonfun$main$1.apply(App.scala:71) at scala.collection.immutable.List.foreach(List.scala:318) at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32) at scala.App$class.main(App.scala:71) at Main$.main(Main.scala:1) at Main.main(Main.scala)

最佳答案

如@blast_hardcheese 所示,您不能有效地将 val 的值设置为依赖于自身的表达式,这就是上面代码中发生的情况。

如果您确实需要这样做(我想不出您这样做的原因),您可以通过在对原始值的引用前面附加 super. 来引用原始值:

object Main extends App {
override val args: Array[String] = if (super.args.isEmpty) Array("f") else super.args
println("args(0) = " + args(0))
}

请注意,您的原始表达式将丢失第一个以外的任何提供的参数。这可能是您的意图,但如果不是,您可能希望将其更改为与上述类似的内容。

关于scala - 数组创建时出现 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com