D 在 args 中接收位置?

D receives location in args?

我对 D 还很陌生(比如……昨天,在寻找 Kotlin 基准测试之后……),目前正在尝试确定它是否是我想要处理的语言。

我正在尝试从命令行传递一些参数,我有点惊讶。假设我通过了“-Foo -Bar”。 我的程序很简单:

import std.stdio;

void main(string [] args) {

    foreach(arg; args) {
        writeln(arg);
    }
}

来自 Java,我希望它能打印出来

但是我的 D 程序似乎接收它的位置作为第一个参数? 输出是:

我试着搜索这个,但所有 Google 的匹配都是指 Java 的 -D 开关... 那么,这是预期的行为吗?如果是,有谁知道为什么?

这在 D 中很正常,继承自 C 和 C++。第一个参数是程序的名称,因此您可以使用它来确定您想要在多用途程序中使用哪个功能。

busybox unix 工具集 https://busybox.net/ 使用了这个(好吧,至少习惯了,我不确定它是否已经改变)所以一个程序,busybox,可以被称为各种 unix命令如 lscp.

使用args[0],它可以分辨出它被称为哪个,尽管它们都指向同一个二进制程序,并做出相应的响应。


提示:如果您对此不感兴趣,您可以使用 foreach(arg; args[1 .. $]) {}

循环您的参数