Scala参数解析

Scala参数解析,scala,command-line-arguments,Scala,Command Line Arguments,为什么 println("Hello, " + args(0) + "!") 运行scala nomain时工作。scala但是 object HelloWorld { def main(args: List[String]) { println("Hello, " + args(0) + "!") } } 给我一个错误: java.lang.NoSuchMethodException: Main.main([Ljava.lang.String;) at java.l

为什么

println("Hello, " + args(0) + "!")
运行scala nomain时工作。scala但是

object HelloWorld {
  def main(args: List[String]) {
    println("Hello, " + args(0) + "!")
  }
}
给我一个错误:

java.lang.NoSuchMethodException: Main.main([Ljava.lang.String;)
    at java.lang.Class.getMethod(Class.java:1786)
    at scala.reflect.internal.util.ScalaClassLoader.run(ScalaClassLoader.scala:94)
    at scala.reflect.internal.util.ScalaClassLoader.run$(ScalaClassLoader.scala:90)
    at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:129)
    at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:22)
    at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:21)
    at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
    at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:29)
    at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:28)
    at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
    at scala.tools.nsc.ScriptRunner.runCompiled(ScriptRunner.scala:170)
    at scala.tools.nsc.ScriptRunner.$anonfun$runScript$1(ScriptRunner.scala:187)
    at scala.tools.nsc.ScriptRunner.$anonfun$runScript$1$adapted(ScriptRunner.scala:187)
    at scala.tools.nsc.ScriptRunner.$anonfun$withCompiledScript$2(ScriptRunner.scala:156)
    at scala.tools.nsc.ScriptRunner.runScript(ScriptRunner.scala:124)
    at scala.tools.nsc.ScriptRunner.runScriptAndCatch(ScriptRunner.scala:200)
    at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:63)
    at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:88)
    at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:99)
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:104)
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
当我运行scala helloworld.scala时

我尝试添加一些语句,如
if(args.size>0)
,但这也会给我带来错误。我想知道我在这里做错了什么。我想知道如何检查列表中是否有内容,以及如何直接打印参数

def main(args: Array[String]): Unit = ???
应该是而不是

def main(args: List[String]): Unit = ???

您应该执行以下操作来检查第一个参数是否存在:

object HelloWorld {
  def main(args: Array[String]) {
    if(args.headOption.isDefined) {
      println("Hello, " + args(0) + "!")
    } else {
      println("There is no first argument")
    }
  }
}

是的,我后退了几步,意识到了这一点。但是,我的后续问题是如何检查args的长度是否为1来启动程序?@SamBean执行
scalac HelloWorld.scala
,然后执行
scala HelloWorld.scala
。如果需要,可以添加
if(args.length>0)
if(args.size>0)