我很高兴看到D(就像......昨天,在寻找Kotlin基准测试之后......)并且目前正试图决定它是否是我想要应对的语言。
我试图从命令行传递一些参数,我有点意外。让我们说我通过" -Foo -Bar"。 我的程序非常简单:
import std.stdio;
void main(string [] args) {
foreach(arg; args) {
writeln(arg);
}
}
来自Java,我希望它能打印
但我的D程序似乎将其位置作为第一个参数? 输出是:
我尝试搜索此内容,但所有Google点击都会引用Java的-D开关...... 那么,这是预期的行为吗?如果是的话,有人知道为什么吗?
答案 0 :(得分:7)
这在D中是正常的,继承自C和C ++。第一个参数是程序的名称,因此您可以使用它来确定多用途程序中您想要的功能。
busybox unix工具集https://busybox.net/使用了这个(好吧,至少习惯了,我不确定它是否已经改变)所以可以调用一个程序busybox
作为各种unix命令ls
或cp
。
使用args[0]
,它可以告诉它被称为哪一个,尽管它们都指向相同的二进制程序,并做出相应的响应。
提示:如果您对此不感兴趣,可以使用foreach(arg; args[1 .. $]) {}