如何解析 Scala 中的命令行参数? [关闭]

2024-02-21

在 Scala 中解析命令行参数的好方法是什么?

Related:

  • 如何解析 Java 中的命令行参数? https://stackoverflow.com/questions/367706/how-do-i-parse-command-line-arguments-in-java

在大多数情况下,您不需要外部解析器。 Scala 的模式匹配允许以函数式风格使用参数。例如:

object MmlAlnApp {
  val usage = """
    Usage: mmlaln [--min-size num] [--max-size num] filename
  """
  def main(args: Array[String]) {
    if (args.length == 0) println(usage)
    val arglist = args.toList
    type OptionMap = Map[Symbol, Any]

    def nextOption(map : OptionMap, list: List[String]) : OptionMap = {
      def isSwitch(s : String) = (s(0) == '-')
      list match {
        case Nil => map
        case "--max-size" :: value :: tail =>
                               nextOption(map ++ Map('maxsize -> value.toInt), tail)
        case "--min-size" :: value :: tail =>
                               nextOption(map ++ Map('minsize -> value.toInt), tail)
        case string :: opt2 :: tail if isSwitch(opt2) => 
                               nextOption(map ++ Map('infile -> string), list.tail)
        case string :: Nil =>  nextOption(map ++ Map('infile -> string), list.tail)
        case option :: tail => println("Unknown option "+option) 
                               exit(1) 
      }
    }
    val options = nextOption(Map(),arglist)
    println(options)
  }
}

将打印,例如:

Map('infile -> test/data/paml-aln1.phy, 'maxsize -> 4, 'minsize -> 2)

此版本仅需要一个内文件。易于改进(通过使用列表)。

另请注意,此方法允许连接多个命令行参数 - 甚至超过两个!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解析 Scala 中的命令行参数? [关闭] 的相关文章

随机推荐

  • 浏览器使用 AJAX + setInterval 不断消耗内存

    我需要使用 JavaScript 在给定的时间间隔内更新大量数据 问题是 无论我使用什么 JS 库 甚至是裸机 js 所有浏览器似乎都会在每个 AJAX 请求上分配内存 并且之后无法释放它 这是一个应该重现错误的示例片段
  • 使用 clang 优化编译时出现意外结果

    我在代码中发现了一个错误 该错误仅在启用编译器优化 O1 或更高版本时才会发生 我跟踪了该错误 似乎在启用优化时我无法在升压转换范围上使用升压 type erased 适配器 我编写了这个 C 程序来重现它 include
  • 命令行命令中的“$”是什么意思?

    我经常发现命令行命令以美元符号在安装许多东西的说明中 例如安装Ruby in Ubuntu 该网站说使用以下命令 sudo apt get install ruby full 什么是 代表 The 不是命令的一部分 它告诉您该命令需要以普通
  • 在 Ruby on Rails 中使用 mini_magick 将 pdf 转换为 png

    背景 我从 API 调用中检索了二进制形式的 pdf base 64 binary data response label generate label response response shipments response shipme
  • ASP3 和 ASP.NET 会话共享

    有没有办法在 ASP3 和 ASP NET 之间共享会话 Thanks 尽管 Microsoft 尽最大努力使 ASP 和 ASP NET 轻松共存 但有一个领域仍然是一个绊脚石 会话状态 幸运的是 ASP NET 升级的会话状态管理的优点
  • JavaScript 在 Android WebView 中不起作用

    我想通过 webView 加载 url 网址是http wapp baidu com f kw BB F0 BC FD http wapp baidu com f kw BB F0 BC FD 此页面可以在系统默认浏览器上正常工作 但在我的
  • 如何使项目浮动在 Jquery 对话框之外

    我想要一个看起来像这样的对话框 我认为这种方法可行 但我想我错了 JavaScript Creates The Dialog ImageDialogDiv dialog position 98 223 resizable false mod
  • jQuery 提交验证,最后有模式对话框?

    我现在有一个表格想要验证 假设一切都正确 我希望它弹出一个对话框确认其详细信息 这是我迄今为止的代码示例 var userConfirmed false dialog dialog buttons Yes function userConf
  • 如何理解ndarray.reshape函数?

    原型为reshape 就是它reshape shape order C 形状的类型是元组 所以我们应该用以下方式调用这个函数myarray reshape 1000 1 32 32 但是我发现很多人用myarray reshape 1000
  • 如何使 Apache mod_deflate 和 Transfer-encoding : Chunked 一起工作?

    我正在尝试在我们的网站上使用大管道概念 这意味着尝试以块的形式发送响应 而不是整体发送响应 以便用户感觉该页面很快 我通过在 java 中的响应对象上使用flushBuffer方法成功地做到了这一点 但是现在 当我尝试使用 apache m
  • 浮点到字符串:字符串长度问题

    我想将浮点值转换为字符串并创建以下简短示例 with Ada Text IO procedure Example is A constant Float 1 234 B constant Float 123 456 789 C consta
  • 寻找一种算法以(伪)随机顺序吐出数字序列

    假设我有一个数字序列 n n 1 n 2 n m 在不提前存储数字的情况下 我想创建一个函数 f 给定序列 1 2 3 m 将以随机 或至少伪随机 顺序吐出原始集合 例如 假设我的序列是 10 11 12 13 14 15 16 17 f
  • UWP - 调试器已附加到 .exe 但未配置

    I m developing Windows Store App UWP and I have a problem with native code I have this message 此代码第二次或第三次触发后抛出此异常 if Pro
  • 删除 DCG 中的左递归 - Prolog

    我在这个语法中遇到了一个关于左递归的小问题 我正在尝试用 Prolog 编写它 但我不知道如何删除左递归
  • 添加另一个对象时出现 java.util.ConcurrentModificationException

    我正在遭受这个例外 我的代码有什么问题 我只想将另一个人的重复名字分开ArrayList public class GlennTestMain static ArrayList
  • 保存时,将添加的文本视图位置保留在图像视图上

    有一个主要活动有两个按钮 一个是 添加文本 另一个是 保存图像 这是主要布局的一部分
  • 在 iOS 6 上使用 AFNetworking 下载文件

    我最近更新到 AFNetworking 2 0 文档说兼容iOS6 0 当我尝试实现下载方法 图像和视频 时 我正在构建一个 iOS 6 0 应用程序 示例使用 AFURLSessionManager manager AFURLSessio
  • 始终生成为 h2 DDL 中的身份

    在我们的项目中 我们使用 postgres 数据库作为开发到生产环境 对于 junit 测试 我们在内存数据库中使用 H2 想知道我们是否可以使用 GENERATE ALWAYS AS IDENTITY 创建 DDL 以在 H2 数据库中插
  • nohup 作为后台任务不返回提示

    我试图在后台运行一个长时间运行的任务 而无需登录并让终端返回提示 但是当我这样做时 该任务似乎进入后台 但我的提示不可用 除非我按 Control C 我想运行任务然后得到提示 staging php pos web nohup php t
  • 如何解析 Scala 中的命令行参数? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 Scala 中解析命令行参数的好方法是什么 Related 如何解析 Java 中的命令行参数 https stackoverflow co