Описание значения как Option
означает, что оно может присутствовать или может присутствовать, и вам необходимо решить, что делать в обоих случаях. Если вы знаете, каким должно быть значение по умолчанию, вы можете использовать getOrElse
, как описано в других ответах. Но вы также можете отложить это решение, выполнив операции, которые сохранят Option
.
В вашем случае вы можете сделать это:
val pb: Option[ColorMessage] = colorDetail.color.map(colorToProtobuf)
Это обработает Color
, если оно есть, но не вызовет ошибки, если его нет (просто вернется None
)
Тогда вы могли бы сделать что-то вроде
val colorMesssage = pb.getOrElse(defaultMessage)
Выполнение этого означает, что вам не нужно иметь значение Color
по умолчанию, вам просто нужно значение ColorMessage
по умолчанию.
Вы можете продолжать использовать такие методы, как map
, filter
в опционе, пока не будете готовы справиться с неопределенностью. Если вы используете такие методы, как contains
, exists
или fold
для обработки результатов, вы можете обработать случай None
без необходимости придумывать значение по умолчанию.