Я изучаю Scala в течение некоторого времени и не могу четко понять использование опции. Это помогает мне избегать нулевых проверок, когда я связываю функции (согласно docs). Это ясно для меня:)
Далее я вижу, что Опция может быть своего рода индикатором для разработчика, где здесь возможно нулевое значение, и это нужно обработать. Это правда? Если да, я должен использовать Опцию, если это возможно? Например
class Racer {
val car = new Car()
}
У меня есть класс Racer, и я уверен, что поле автомобиля не может быть нулевым (поскольку оно является константой и получает значение при создании экземпляра Racer). Здесь нет необходимости в опции.
class Racer {
var car = new Car()
}
Здесь я делаю так, чтобы автомобиль мог измениться. И возможно, кому-то назначить нулевой автомобиль. Должен ли я использовать опцию здесь? Если да, то я замечаю, что все поля моего класса являются кандидатами на опцию. И мой код выглядит следующим образом:
class Racer {
var car: Option[Car] = None
var currentRace: Option[Race] = None
var team: Option[Team] = None
...
}
Хорошо ли это? Для меня это похоже на использование опции.
def foo(): Result = {
if( something )
new Result()
else
null
}
У меня есть метод, который может возвращать null. Должен ли я возвращать вариант? Должен ли я всегда делать это, если возможно, чтобы метод возвращал null?
Любые мысли об этом были бы полезны. Спасибо заранее!
Мой вопрос аналогичен Почему опция, но я думаю, что это не то же самое. Это больше о том, когда, а не почему.:)