【发布时间】:2020-09-28 14:39:47
【问题描述】:
我正在开发一个用 Scala 编写的命令行工具,它的执行方式如下:
sbt "run --customerAccount 1234567"
现在,我希望可以灵活地接受 "--CUSTOMERACCOUNT" 或 --cUsToMerAccount 或 --customerACCOUNT ...你明白了
代码如下:
lazy val OptionsParser: OptionParser[Args] = new scopt.OptionParser[Args]("scopt") {
head(
"XML Generator",
"Creates XML for testing"
)
help("help").text(s"Prints this usage message. $envUsage")
opt[String]('c', "customerAccount")
.text("Required: Please provide customer account number as -c 12334 or --customerAccount 12334")
.required()
.action { (cust, args) =>
assert(cust.nonEmpty, "cust is REQUIRED!!")
args.copy(cust = cust)
}
}
我假设opt[String]('c', "customerAccount") 从命令行进行模式匹配并将与“customerAccount”匹配 - 我如何让它与"--CUSTOMERACCOUNT" 或--cUsToMerAccount 或--customerACCOUNT 匹配? args.copy (cust = cust) 到底是做什么的?
如果这些问题看起来太基本,我深表歉意。我对 Scala 非常陌生,之前曾在 Java 和 Python 中工作过,所以有时我也觉得语法有点难以理解。
【问题讨论】:
-
你的问题似乎与 scopt 库有关,而不是一般的 scala,我会从 scopt 文档开始,看看它是否支持你需要的东西
标签: scala command-line-interface scopt