Вы не «застряли» с Some
- у вас есть преимущество , что у вас есть Some
! В Java вы застряли бы со значением, тип которого не выражал тот факт, что он может фактически не существовать!
MyThing recklessly = apiCall.getMeAThing();
recklessly.iSureHopeImNotNull(); //OH NOES!
Сравните это с этим
apiCall.getMeAThing foreach (_.cannotPossiblyBeNull)
Тип данных Option
означает, что бит «возможно, не существует» вашего запроса фактически вставлен в возвращаемый тип запроса. Пожалуйста, придерживайтесь Option
- через несколько недель вы будете рвать на себе волосы, когда будете писать код Java, а его там нет!
Снятие ваших возражений
Вы можете сказать :
Оу, но мне нужно взять имеющееся у меня значение и добавить к нему 1
Я говорю:
apiCall.getMeAThing map (_ + 1)
Вы могли бы сказать
Оу, но мне нужно передать его методу, по умолчанию пустая строка, если у меня есть ноль
Я говорю:
foo( apiCall.getMeAThing getOrElse "" )
Вы можете сказать
Оу, но я использую это значение для вызова другого метода API и получения чего-то еще
Я говорю:
apiCall.getMeAThing flatMap apiCall.getMeAnotherThing
Вы обязательно скажете
Оу, но это ужасно неэффективно со всеми этими созданиями объектов
Я говорю: "попробуй, все будет хорошо"