Size: a a a

2021 May 02

W

WhiteBlackGoose in pro.net
Окей, объясните, пожалуйста.
Зачем Option? Чтобы можно было вернуть и валидный и невалидный объект так, что принимающая сторона обязуется проверить. Nullable ведет себя так же, потому что не сможешь работать с MyType? как с MyType (сначала проверь два случая, в одном из которых получишь MyType). if-ы и свитчи выглядят для обоих одинаково.

Почему nullable это не аналог option? Да, nullable от типа nullable сделать не получится, но поэтому я и говорил, что nullabble заместит в большинстве случаев, вероятно, не во всех.
источник

SB

S B in pro.net
все так. только не все так. не хватает методов, которые позволяют удобно это говно пайпить, мапить и джоинить. то есть, как раз не хватает функторов и монад.
источник

SB

S B in pro.net
иначе чем это отличается от обезъяннего if err := myFunc(); err != Nil?
источник

SB

S B in pro.net
а если добыть действительно хорошие тяжелые наркотики и решить написать (дженерик!) расширеня на нулаблы, которые умеют мапить как минимум, пусть даже поддержать from ... select ... нотацию и паблишить это через какой-нибудь нугет с упоротым названием FunctionalExtensions.. то тогда будет уже нечто отдаленно действительно похожее. если еще агрессивно инлайнить, то тогда  и с перфом получше будет.
источник

SB

S B in pro.net
но как доказано британскими учеными, каждый дотнетчик, которырй за свою жизнь нагрешил пакет типа FunctionalExtensions в следующей жизни рождается козлом или макакой. так что, я бы взвесил все за и против.
источник

W

WhiteBlackGoose in pro.net
Мда. По отдельности слова понятны, в целом претензия - нет. Видимо, пойду учить фп дальше.

Но чего бы там ни хватало, не прав ли я, что это все могут в будущем накатить и на нуллаблы? И то, что не в них дело, а в отсутствии нужного функционала?
источник

S

Skyuzi in pro.net
Сильно
источник

SB

S B in pro.net
могут. но не все. функторы (т.е. метод Select) могут вполне.
источник

SB

S B in pro.net
но зачем?
источник

SB

S B in pro.net
точнее не так: но НАХУЯ?
источник

W

WhiteBlackGoose in pro.net
А что бы делал селект? Ну то есть не прав ли я, что что-то типа монады (или типа того) получится в виде myNullableList?.Select(c => c) ?? null?
источник

SB

S B in pro.net
нет, получится  Nulalble<TOut> Select<TIn>(Nulalble<TIn>, Func<TIn, TOut>).
источник

SB

S B in pro.net
я нигде с этим не спорил, если что
источник

W

WhiteBlackGoose in pro.net
А почему бы не комбинировать парадигмы? Я конечно сейчас нарываюсь...) Но кажется, что само по себе это неплохо
источник

IC

Ilya L Che in pro.net
Нет, это не другой тип никаким боком. Это просто аннотация, существующая на этапе компиляции.
источник

SB

S B in pro.net
само по себе неплохо, да. никто не спорит, что разумное комбинирование подходов может быть весьма и весьма полезным. но чувство меры должно быть.
источник

W

WhiteBlackGoose in pro.net
Я про то, что с флажком компилятор кричать будет если не проверил.
источник

SB

S B in pro.net
а то если дурака научить Богу молиться, он лоб расшибет.
источник

IC

Ilya L Che in pro.net
Будет. Поэтому я и сказал, что придётся везде писать if-else. С option так не работают в 99% случаев.
источник

AK

Andrei Kurosh in pro.net
Экспериментировать - хорошо, но при этом надо понимать, почему фича в языке-источнике сделана так, как она сделана, а не просто лепить все в одну кучу. Например, хаскелль проектировался под написание программ в математической нотации - без мутабельного состояния, циклов, с ленивостью и тэдэ. И чтобы это хоть как-то работало на реальном железе, им пришлось дичайше угореть по части оптимизации. В сишарпе базовые строительные блоки другие, поэтому и проблем таких нет
источник