2014-01-22 3 views
0

При реализации Option#unit:Вариант № Блок

override def unit[A](a: => A): Option[A] = ...

есть ли разница между этими 2?

Some(a)

или

Option[A](a)

Или, возможно, Option[A] ненужно с учетом заданного типа возвращаемого значения из Option[A]?

+4

Необходимо разъяснить, когда вы спрашиваете о типах, не входящих в стандартную библиотеку Scala. Это не является частью этого. В частности, «Вариант» Scala не определяет проекцию типа типа «unit». –

ответ

7

Если вы пытаетесь сделать Option монадой (судя по имени метода), то Some(a) является единственной версией, которая следует за законами монады. См. https://stackoverflow.com/a/20125955/9204

6

Это зависит от реализации Option и Some. В стандартном scala Option(a) дает вам дополнительную проверку нуля и может возвращать None, если a оценивает null.

+0

Спасибо за ваш ответ, Сергей. Я проголосовал за тебя, но выбрал ответ Алексея, потому что я действительно спрашивал о варианте Монады. –

+0

Я тоже поддержал его ответ :) –

Смежные вопросы