Как в этом примере:
sealed class Option<T>
object None : Option<Nothing>() // <-- like this
class Some<T> : Option<T>()
Или, если это не очень хорошая практика, что я должен использовать здесь вместо этого?
Есть ли официальный ответ / статья по этому поводу? Или есть какие-то аргументы, что это хорошая практика?
Я знаю, что Nothing
был разработан для использования в качестве типа возвращаемого значения для функций, которые никогда не возвращают никакого значения, поэтому я не уверен, является ли допустимым использование его в качестве универсального параметра.
Я знаю, что есть статья , в которой говорится, что вы можете сделать это, но я не уверен, могу ли я доверять этому.
И автор koptional тоже использует это, но я не знаю, могу ли я доверять этому тоже.
Кроме того, похоже, что в Scala Option
реализован аналогично тому, что None
имеет тип Option[Nothing]
, а Nothing
в Scala аналогичен Nothing
.
Котлина.