Re[3]: Опциональные типы
От: vdimas Россия  
Дата: 20.02.17 19:20
Оценка: -2 :)))
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, netch80, Вы писали:


XC>>>4. Какой физический смысл у многократного закручивания опционала в опционал? Optional<Optional<T>>, Optional<Optional<Optional<T>>> и т.п.? Где такое может встретиться и для чего?

N>>Сомневаюсь, что он зачем-то такой нужен.
WH>Очень нужен.
WH>Без него обобщённый код работать не будет.
WH>Например:

Ну, для ссылочных типов такую же семантику умудрились сделать без накручивания вложенностей определений.
Просто есть специальное значение, приводимое (сравнимое) с произвольным типом — null.

Для алг. типов данных — тоже. Правда, эти типы данных всегда обрабатываются как ссылочные, даже если не ссылочные. ))


WH>Теперь если у нас есть обобщённый код который работает с хештаблицей и в него передадут Hashtable<int, Option<string>>


Если string — это ссылочный тип, то Option<string> не имеет смысла, можно пользоваться сразу string.


WH>то без этой фичи код не будет знать есть элемент или в таблице лежит None.


Это всё рассуждения в пользу бедных, потому что прикладная семантика может быть обслужена сугубо прикладными же полями, а не "системными". И даже должна, потому что булевских флагов, связанных со значениям, может быть более одного.

А в общем случае достаточно интерпретировать null как "нет значения".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.