Сообщение 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# представляется как инструмент обеспечивающий валидацию всего и вся.
В нем даже отсутствует неявное привидение и значение по умолчанию(если мне память не изменяет).
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# представляется как инструмент обеспечивающий валидацию всего и вся.
В нем даже отсутствует неявное приведение и значение по умолчанию(если мне память не изменяет).
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# представляется как инструмент обеспечивающий валидацию всего и вся.
В нем даже отсутствует неявное приведение и значение по умолчанию(если мне память не изменяет).