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命令,如ls
或cp
。
使用args[0]
,它可以告诉哪个被调用,虽然它们都指向相同的二进制程序,并相应地作出响应。
提示:如果您对此不感兴趣,可以用foreach(arg; args[1 .. $]) {}
循环参数foreach(arg; args[1 .. $]) {}