gpt4 book ai didi

scala - 使用 Scala 选项验证命令行参数

转载 作者:行者123 更新时间:2023-12-04 17:51:46 25 4
gpt4 key购买 nike

我正在使用 Apache commons CLI 在 Scala 实用程序应用程序中进行命令行解析。其中一个参数是覆盖默认“5432”(对于 PostgreSQL)的数据库端口号 (--port=)。我正在尝试使用 Option 类来协助验证。这是我想出的代码。有没有更好的方法来进行验证?

val port = Option(commandLine.getOptionValue("port", "5432")) map {
try {
val value = Integer.parseInt(_)
if (value < 1 || value > 65535) throw new NumberFormatException
value
} catch {
case ex: NumberFormatException =>
throw new
IllegalArgumentException("the port argument must be a number between 1 and 65535")
}
} get

端口号必须是介于 1 和 65535 之间的整数。

这样做会更好吗?为什么或为什么不?

val port = Option(commandLine.getOptionValue("port")) map {
try {
val value = Integer.parseInt(_)
if (value < 1 || value > 65535) throw new NumberFormatException
value
} catch {
case ex: NumberFormatException =>
throw new
IllegalArgumentException("the port argument must be a number between 1 and 65535")
}
} getOrElse(5432)

最佳答案

我承认我不是 100% 确定,如果出现问题,或者如果 5432 是每个错误值的默认端口,你想抛出什么,但我会这样做:

def getPort(candidate: Option[String]) = candidate
.map { _.toInt } // throws NumberFormatException
.filter { v => v > 0 && v <= 65535 } // returns Option[Int]
.getOrElse { throw new IllegalArgumentException("error message") } // return an Int or throws an exception

关于scala - 使用 Scala 选项验证命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7514156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com