请理解我没有Java背景,这是我使用Scala的第一个小时。我不抨击Scala - 只是对设计决策感到好奇。
Scala是否有理由决定炫耀其 args 对象的约定?
与我熟悉的语言相比,我希望Scala args(0)返回可执行文件的名称,而args(1)返回第一个参数。
而不是利用上述'未说出口的'惯例,Scala要求编码器混合使用一些Java代码才能获得可执行文件的名称(re。getting script filename and printing it)。
答案 0 :(得分:4)
这就是Java的做法,而Scala就是这样,因为它们都被编译为JVM字节码并以相同的方式运行。 (例如java -jar myjar.jar)
原因与Java相同:您可以在此处阅读有关它的讨论:https://softwareengineering.stackexchange.com/questions/211073/why-does-java-not-put-the-filename-in-args。
简而言之,传递文件名的概念在Java / Scala中没有C / C ++那么有意义,无论如何你都可以轻松获得它。