Я хотел проверить некоторые лучшие практики программирования Scala, так как я новичок в Scala. Я читал онлайн о том, как Scala обычно не использует исключения, кроме «исключительных» обстоятельств (которые не включают проверку параметров). Прямо сейчас в моем проекте я использую много require
, поэтому мне интересно, какой будет лучший способ проверки типов.Проверка параметров конструктора/метода Scala
Например, если у меня есть класс
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]
}
}
Или использовать вместо этого вариант «Вариант»?
Кроме того, для методов scala, как я могу проверить параметр метода? Если я уже возвращаю параметр, я просто возвращаю пустой параметр, если я получаю плохой параметр? Разве это не значит, что я должен проверить пустой параметр, когда я использую возврат метода и не выдавал исключение для более конкретного сообщения? (например, исключение среды выполнения не может использовать нули).
Мне тоже интересно об этом – iCodeLikeImDrunk
@eddiemundorapundo, как это будет работать для методов? Для классов я бы просто использовал право? – jstnchng
ugh извините за удаление моего комментария Я не видел Try/Success/Failure, так как я последний раз использовал Scala. Try/Success/Failure похоже на Либо, как вариант. В вашем примере, похоже, вам нужно будет getOrElse() в сочетании с вашим Foo(), чтобы получить объект Foo, или вы можете что-то сделать с объектом Foo напрямую, используя Foo(). FlatMap (...) и верните еще один Try (который может исходить из ваших методов), затем подключите больше карт/фильтров/whatevers. – eddiemundorapundo