我正在使用 scopt 库:https ://github.com/scopt/scopt
我看到如果我事先知道它们,我可以用选项名称定义一个案例类。如果我不知道用户将通过的选项的名称怎么办?我有什么办法可以在字典或其他东西中捕获这些选项值?
谢谢!
我正在使用 scopt 库:https ://github.com/scopt/scopt
我看到如果我事先知道它们,我可以用选项名称定义一个案例类。如果我不知道用户将通过的选项的名称怎么办?我有什么办法可以在字典或其他东西中捕获这些选项值?
谢谢!
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))