D在args中获得位置?

Sil*_*law 1 command-line d args

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

我试图从命令行传递一些参数,我有点惊讶.假设我通过"-Foo -Bar".我的程序很简单:

import std.stdio;

void main(string [] args) {

    foreach(arg; args) {
        writeln(arg);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • -foo
  • -酒吧

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

  • /首页/(用户名)/ Java_Projects/HelloD/hellod
  • -foo
  • -酒吧

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

Ada*_*ppe 7

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

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

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


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