К сожалению, null
является допустимым значением для любого типа AnyRef
, что является следствием взаимодействия Scala с Java. Таким образом, метод, который принимает объект типа A
и внутренне хранит его внутри Option
, вполне может потребовать хранения null
внутри этой опции.
Например, допустим, у вас есть метод, который берет заголовок списка, проверяет, соответствует ли этот заголовок ключу в хранилище, а затем возвращает true, если это так. Можно реализовать это так:
def isFirstAcceptable(list: List[String], keys: Set[String]): Boolean =
list.headOption map keys getOrElse false
Итак, вот в чем дело ... если то, что внутри list
и keys
происходит от какого-то Java API, они оба могут содержать null
! Если Some(null)
невозможно, то isFirstAcceptable(List[String](null), Set[String](null))
вернет false
вместо true
.