gpt4 book ai didi

scala - Scala案例类:如何验证构造函数参数

转载 作者:行者123 更新时间:2023-12-03 14:49:03 25 4
gpt4 key购买 nike

下面是一个案例类,用于验证name参数既不是null也不为空:

case class MyClass(name: String) {

require(Option(name).map(!_.isEmpty) == Option(true), "name is null or empty")
}


不出所料,将 null或空字符串传递给 name会导致 IllegalArgumentException

是否可以重写验证以获取 SuccessFailure而不是抛出 IllegalArgumentException

最佳答案

您不能让构造函数返回类类型以外的其他内容。但是,您可以在伴随对象上定义一个函数来做到这一点:

case class MyClass private(name: String)

object MyClass {
def fromName(name: String): Option[MyClass] = {
if(name == null || name.isEmpty)
None
else
Some(new MyClass(name))
}


当然,您可以根据需要返回 ValidationEitherTry

关于scala - Scala案例类:如何验证构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478588/

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