D在args中接收位置?

我很早就看到D(比如昨天在寻找Kotlin基准之后…),并且正在试图决定它是否是我想要应对的语言。

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

import std.stdio; void main(string [] args) { foreach(arg; args) { writeln(arg); } } 

来自Java,我期望它打印

  • -foo
  • -酒吧

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

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

我试图寻找这个,但所有的谷歌命中是指Java的-D开关…所以,这是预期的行为? 如果是,有谁知道为什么?

在D中这是正常的,从C和C ++inheritance。 第一个参数是程序的名称,所以你可以使用它来确定在多用途程序中你想要的function。

busybox unix工具集https://busybox.net/使用这个(至少,以前,我不知道它是否改变了),所以一个程序, busybox ,可以被称为各种Unix命令,如lscp

使用args[0] ,它可以告诉哪个被调用,虽然它们都指向相同的二进制程序,并相应地作出响应。


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