D在args中接收位置?

时间:2016-07-13 17:51:41

标签: command-line d args

我很高兴看到D(就像......昨天,在寻找Kotlin基准测试之后......)并且目前正试图决定它是否是我想要应对的语言。

我试图从命令行传递一些参数,我有点意外。让我们说我通过" -Foo -Bar"。 我的程序非常简单:

import std.stdio;

void main(string [] args) {

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

来自Java,我希望它能打印

  • -foo
  • -Bar

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

  • /家庭/(用户名)/ Java_Projects / HelloD / hellod
  • -foo
  • -Bar

我尝试搜索此内容,但所有Google点击都会引用Java的-D开关...... 那么,这是预期的行为吗?如果是的话,有人知道为什么吗?

1 个答案:

答案 0 :(得分:7)

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

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

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

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

循环您的参数