0

我正在使用 scopt 库:https ://github.com/scopt/scopt

我看到如果我事先知道它们,我可以用选项名称定义一个案例类。如果我不知道用户将通过的选项的名称怎么办?我有什么办法可以在字典或其他东西中捕获这些选项值?

谢谢!

4

1 回答 1

2

opt[Map[String,String]]像这样试试

case class Config(args: Map[String, String] = Map())

object Hello extends App {
  val parser = new scopt.OptionParser[Config]("scopt") {
    head("scopt", "3.x")
    opt[Map[String,String]]("args").valueName("k1=v1,k2=v2...").action( (x, c) =>
      c.copy(args = x) ).text("other arguments")
  }

  parser.parse(args, Config()) match {
    case Some(config) => println(config)
    case None =>
    // arguments are bad, error message will have been displayed
  }
}

在执行时

run --args key1=val1,key2=val2

输出

Config(Map(key1 -> val1, key2 -> val2))
于 2019-09-20T23:10:07.650 回答