Информация об изменениях

Сообщение Re[5]: Подводные камни enum от 08.05.2019 14:12

Изменено 08.05.2019 14:12 Разраб

Re[5]: Подводные камни enum
Здравствуйте, MadHuman, Вы писали:

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


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

MH>>>а зачем?
S>>Чтобы свежесконструированное значение имело имя
S>>var t = (new MyEnum[1])[0]; // чему равно t?
MH>0, но это следствие текущего дизайна енумов.

MH>с точки зрения системы типов, лучше явно выражать, что переменная допускает пустое значение и значения енума, либо только значения енума.

MH>ведь нет к примеру пола None, есть либо М либо Ж.
MH>и есть спец. случай — пол неопределён, но это касается не пола, а конкретного места (переменной/поля/аргумента).
MH>и с помощью системы типов мы выражаем что либо допустимо тут пустое значение, либо нет.

MH>это аналогично по сути движению по запрету null для refrerence типов, точнее чтоб специальным образом через типы выражать когда может быть null а когда нет.


Что самое интересное, в F# о корректности типов которого есть целый сайт, так же можно enum-у присвоить некорректное значение.
Хотя на упомянутом сайте fsharpforfunandprofit.com F# представляется как инструмент обеспечивающий валидацию всего и вся.
В нем даже отсутствует неявное привидение и значение по умолчанию(если мне память не изменяет).
Re[5]: Подводные камни enum
Здравствуйте, MadHuman, Вы писали:

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


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

MH>>>а зачем?
S>>Чтобы свежесконструированное значение имело имя
S>>var t = (new MyEnum[1])[0]; // чему равно t?
MH>0, но это следствие текущего дизайна енумов.

MH>с точки зрения системы типов, лучше явно выражать, что переменная допускает пустое значение и значения енума, либо только значения енума.

MH>ведь нет к примеру пола None, есть либо М либо Ж.
MH>и есть спец. случай — пол неопределён, но это касается не пола, а конкретного места (переменной/поля/аргумента).
MH>и с помощью системы типов мы выражаем что либо допустимо тут пустое значение, либо нет.

MH>это аналогично по сути движению по запрету null для refrerence типов, точнее чтоб специальным образом через типы выражать когда может быть null а когда нет.


Что самое интересное, в F# о корректности типов которого есть целый сайт, так же можно enum-у присвоить некорректное значение.
Хотя на упомянутом сайте fsharpforfunandprofit.com F# представляется как инструмент обеспечивающий валидацию всего и вся.
В нем даже отсутствует неявное приведение и значение по умолчанию(если мне память не изменяет).