下面是一个案例类,用于验证name参数既不null是空的也不是空的:
case class MyClass(name: String) {
require(Option(name).map(!_.isEmpty) == Option(true), "name is null or empty")
}
Run Code Online (Sandbox Code Playgroud)
正如所料,传递null或空字符串name导致IllegalArgumentException.
是否有可能重写验证以获得Success或Failure代替抛出IllegalArgumentException
vpt*_*ron 21
您不能让构造函数返回除类类型之外的其他内容.但是,您可以在随播对象上定义一个函数来执行此操作:
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))
}
Run Code Online (Sandbox Code Playgroud)
当然Validation,如果您愿意,您可以返回a ,an Either或a Try.
| 归档时间: |
|
| 查看次数: |
10001 次 |
| 最近记录: |