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

Posted

技术标签:

【中文标题】如何在 Dart 中访问 argv / 命令行选项?【英文标题】:How do I access argv / command line options in Dart? 【发布时间】:2012-03-05 23:27:47 【问题描述】:

Dart 有 getopt 库吗?

【问题讨论】:

【参考方案1】:

编辑:这不再有效,请参阅上面接受的答案。

Options

http://api.dartlang.org/dart_io/Options.html

List<String> argv = (new Options()).arguments;

【讨论】:

我看到 Dart 从参数中省略了脚本名称。你知道怎么找回吗? Ruby 和 Perl 使用 $0 来实现。 啊,Options 有一个script 访问器。 rosettacode.org/wiki/Program_name#Dart 补充一点意见:截至 2013 年 3 月,Options 类位于 dart:io 中。 Options 类不再存在于 dart:io 中。请改用 package:args。【参考方案2】:
#!/usr/bin/env dart

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

【讨论】:

一些cmets:(1)不需要导入核心库,(2)+操作符不能作为String连接,所以使用"Args: $new Options().arguments " 我认为对于我正在使用的 Dart/Mac OS X 版本,您实际上必须导入 dart:core。谢谢你的飞镖技巧。显然+ 可以用于字符串连接,因为它在这个sn-p 中工作。也许在 Dart 中字符串插值是首选,但它不是唯一的选择。【参考方案3】:

我使用这个库来定义和解析命令行参数http://pub.dartlang.org/packages/args

【讨论】:

【参考方案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);

【讨论】:

【参考方案5】:

使用选项不再是一个选项,使用:

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

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

要解析传递给 main 的参数,请使用 cool package

【讨论】:

以上是关于如何在 Dart 中访问 argv / 命令行选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ubuntu 网络服务器上为 Dart 安装 pub(命令行使用)

如何在 Mathematica 中访问 ARGV?

main:处理命令行选项

python使用argparse解析命令行参数

使用 -n 或 -p 选项时是不是可以将命令行参数传递给 @ARGV?

简单的命令行选项