저는 스칼라 유틸리티 응용 프로그램에서 명령 줄 구문 분석을 위해 Apache Commons CLI를 사용하고 있습니다. 인수 중 하나는 기본값 "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 사이의 정수 여야합니다.
이렇게하는 것이 좋을까요? 그 이유는 무엇? 나는 당신이 경우 무언가에 던져 질하고 싶은, 100 % 확실하지 않다 인정
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)
std lib에서 누락 된 것은'String => Option [Int]'입니다. – ziggystar
@ziggystar : Scalaz를 사용할 수 있다면, 그것은'parsent : String => Validation [NumberFormatException, Int]'메소드를 가지고 있습니다. 유효성 검사에서'toOption'을 호출하면'Option [Int]'를 얻을 수 있습니다. – missingfaktor