D 在 args 中接收位置?
D receives location in args?
我对 D 还很陌生(比如……昨天,在寻找 Kotlin 基准测试之后……),目前正在尝试确定它是否是我想要处理的语言。
我正在尝试从命令行传递一些参数,我有点惊讶。假设我通过了“-Foo -Bar”。
我的程序很简单:
import std.stdio;
void main(string [] args) {
foreach(arg; args) {
writeln(arg);
}
}
来自 Java,我希望它能打印出来
- -富
- -栏
但是我的 D 程序似乎接收它的位置作为第一个参数?
输出是:
- /home/(用户名)/Java_Projects/HelloD/hellod
- -富
- -栏
我试着搜索这个,但所有 Google 的匹配都是指 Java 的 -D 开关...
那么,这是预期的行为吗?如果是,有谁知道为什么?
这在 D 中很正常,继承自 C 和 C++。第一个参数是程序的名称,因此您可以使用它来确定您想要在多用途程序中使用哪个功能。
busybox unix 工具集 https://busybox.net/ 使用了这个(好吧,至少习惯了,我不确定它是否已经改变)所以一个程序,busybox
,可以被称为各种 unix命令如 ls
或 cp
.
使用args[0]
,它可以分辨出它被称为哪个,尽管它们都指向同一个二进制程序,并做出相应的响应。
提示:如果您对此不感兴趣,您可以使用 foreach(arg; args[1 .. $]) {}
循环您的参数
我对 D 还很陌生(比如……昨天,在寻找 Kotlin 基准测试之后……),目前正在尝试确定它是否是我想要处理的语言。
我正在尝试从命令行传递一些参数,我有点惊讶。假设我通过了“-Foo -Bar”。 我的程序很简单:
import std.stdio;
void main(string [] args) {
foreach(arg; args) {
writeln(arg);
}
}
来自 Java,我希望它能打印出来
- -富
- -栏
但是我的 D 程序似乎接收它的位置作为第一个参数? 输出是:
- /home/(用户名)/Java_Projects/HelloD/hellod
- -富
- -栏
我试着搜索这个,但所有 Google 的匹配都是指 Java 的 -D 开关... 那么,这是预期的行为吗?如果是,有谁知道为什么?
这在 D 中很正常,继承自 C 和 C++。第一个参数是程序的名称,因此您可以使用它来确定您想要在多用途程序中使用哪个功能。
busybox unix 工具集 https://busybox.net/ 使用了这个(好吧,至少习惯了,我不确定它是否已经改变)所以一个程序,busybox
,可以被称为各种 unix命令如 ls
或 cp
.
使用args[0]
,它可以分辨出它被称为哪个,尽管它们都指向同一个二进制程序,并做出相应的响应。
提示:如果您对此不感兴趣,您可以使用 foreach(arg; args[1 .. $]) {}