command-line - 如何使用 scalax.io.CommandLineParser?

标签 command-line scala

我想创建一个将字符串数组作为构造函数参数并将命令行选项值作为成员 val 的类。类似下面的内容,但我不明白 Bistate 是如何工作的。

import scalax.data._
import scalax.io.CommandLineParser

class TestCLI(arguments: Array[String]) extends CommandLineParser {
    private val opt1Option = new Flag("p", "print") with AllowAll
    private val opt2Option = new Flag("o", "out") with AllowAll
    private val strOption = new StringOption("v", "value") with AllowAll
    private val result = parse(arguments)
    // true or false
    val opt1 = result(opt1Option)
    val opt2 = result(opt2Option)
    val str = result(strOption)
}

最佳答案

以下是用于获取 bool 值的模式匹配的较短替代方案:

val opt1 = result(opt1Option).isInstanceOf[Positive[_]]
val opt2 = result(opt2Option).posValue.isDefined

第二个可能更好。 posValue 字段是一个 Option(还有 negValue)。 Option 中的方法 isDefined 告诉您它是 Some(x) 还是 None。

关于command-line - 如何使用 scalax.io.CommandLineParser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/251746/

相关文章:

gcc - 我可以使用哪些行军/音乐选择?

linux - 在 unix 一行中将 *.foo 更改为 *.bar

scala - 如何让 sbt 不尝试将名称以 .scala 结尾的目录编译为 Scala 源文件?

scala - 从 Scala 控制台运行数据库演进

c - 为什么 OSX 命令行中使用 Bash

c# - 不同类的大量命令行参数

python - 如何在Python shell脚本中使用pipenv?

scala - Akka-Scala-Camel-TCP 套接字中的多条消息发送到死信

scala - Apache Flink - 无法使用 Int 或 Long 泛型参数编译 KeyedOneInputStreamOperatorTestHarness

java - 如何将Scala语言与Spring Security集成