【发布时间】:2015-08-07 18:16:41
【问题描述】:
我想了解一些 Scala 编程的最佳实践,因为我是 Scala 新手。我在网上阅读了有关 Scala 通常不使用除“异常”情况(不包括参数检查)之外的异常的信息。现在在我的项目中,我使用了很多require,所以我想知道更好的类型检查方法是什么。
例如,如果我有课
class Foo(String bar){
require(StringUtils.isNotEmpty(bar), "bar can't be empty")
}
我有哪些替代检查栏的方法?我要像这样创建一个伴生对象吗
Object Foo {
def apply(bar: String) = Try[Foo] {
bar match = {
case null => Failure("can't be null")
//rest of checks
case _ => Success[Foo]
}
}
或者我应该使用 Option 代替吗?
另外,对于scala方法,如何查看方法的参数呢?如果我已经返回了一个选项,如果我得到一个错误的参数,我是否只返回一个空选项?这是否意味着当我使用方法的返回时我必须检查一个空的选项并且不会抛出异常以允许更具体的消息? (例如,运行时异常不能使用空值)。
【问题讨论】:
-
我也很想知道这个
-
@eddiemundorapundo 这对方法有什么作用?对于我只会使用 apply 的课程,对吗?
-
很抱歉删除了我的评论,自从我上次使用 Scala 以来,我还没有看到 Try/Success/Failure。 Try/Success/Failure 似乎就像是 Option 一样。在您的示例中,您必须将 getOrElse() 与 Foo() 结合使用才能获取 Foo 对象,或者您可以使用 Foo().flatMap(...) 直接对 Foo 对象执行某些操作并返回另一个尝试(可能来自您的方法)然后链接更多地图/过滤器/whatevers。
-
@eddiemundorapundo 没问题,映射对选项 iirc 仍然有效! :) 当我创建它时,我可以在一边处理它,但这似乎是额外的工作——这就是为什么我想知道使用
requires是否会更好。
标签: scala