При реализации Option#unit
:Вариант № Блок
override def unit[A](a: => A): Option[A] = ...
есть ли разница между этими 2?
Some(a)
или
Option[A](a)
Или, возможно, Option[A]
ненужно с учетом заданного типа возвращаемого значения из Option[A]
?
При реализации Option#unit
:Вариант № Блок
override def unit[A](a: => A): Option[A] = ...
есть ли разница между этими 2?
Some(a)
или
Option[A](a)
Или, возможно, Option[A]
ненужно с учетом заданного типа возвращаемого значения из Option[A]
?
Если вы пытаетесь сделать Option
монадой (судя по имени метода), то Some(a)
является единственной версией, которая следует за законами монады. См. https://stackoverflow.com/a/20125955/9204
Это зависит от реализации Option
и Some
. В стандартном scala Option(a)
дает вам дополнительную проверку нуля и может возвращать None, если a
оценивает null
.
Спасибо за ваш ответ, Сергей. Я проголосовал за тебя, но выбрал ответ Алексея, потому что я действительно спрашивал о варианте Монады. –
Я тоже поддержал его ответ :) –
Необходимо разъяснить, когда вы спрашиваете о типах, не входящих в стандартную библиотеку Scala. Это не является частью этого. В частности, «Вариант» Scala не определяет проекцию типа типа «unit». –