如何在Dart中访问argv/命令行选项?

11
Dart有一个getopt库吗?
5个回答

33

使用Options已经不再是一个选择,使用:

void main(List<String> args) {
   print(args);
}

要获取可执行文件,请使用 Platform.executable(Platform 来自 dart:io)

要解析传递给 main 函数的参数,请使用这个很棒的包


4
// dart 1.0 
import 'dart:io';

void main(List<String> args) {
  String exec = Platform.executable;
  List<String> flags = Platform.executableArguments;
  Uri    script = Platform.script;

  print("exec=$exec");
  print("flags=$flags");
  print("script=$script");

  print("script arguments:");
  for(String arg in args)
    print(arg);
}

4

我看到Dart从参数中省略了脚本名称。你知道如何检索它吗?Ruby和Perl使用$0来实现。 - mcandre
啊,Options有一个script访问器。http://rosettacode.org/wiki/Program_name#Dart - mcandre
小额附言:截至2013年3月,Options类在dart:io中。 - Florian Loitsch
Options 类已经不存在于 dart:io 中,请使用 package:args 代替。 - Steven Roose

1

1
#!/usr/bin/env dart

main() {
    print("Args: " + new Options().arguments);
}

一些注释:(1)您不需要导入核心库,(2)+运算符不能用作字符串连接,因此请使用“Args: $ {new Options() .arguments}”。 - rmuller
我认为对于我正在使用的Dart/Mac OS X版本,你确实需要导入dart:core。感谢你提供的Dart技巧。显然,+可以用于字符串连接,因为它在这个片段中起作用。也许在Dart中更喜欢使用字符串插值,但这不是唯一的选择。 - mcandre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接