Сообщение Re[4]: Что должен возвращать if? от 16.10.2014 18:37
Изменено 16.10.2014 18:38 Evgeny.Panasyuk
Здравствуйте, gbear, Вы писали:
G>Получим variant[string, variant[int, variant[decimal, option[T]]]]. Что несколько не удобно, имхо. Если идти по такому пути, то надо иметь возможноть получать какой-нибудь variant[string, int, decimal, option[T]]
Вижу несколько вариантов:
1. Автоматически делать flatten, но только при условие что это сломает обобщённый код.
2. Дать возможность делать явный flatten.
3. Сделать выражение не просто if else, а составное if else if else if else, то есть что-то типа специального keyword'а elseif (но думаю что его вводить не обязательно, а просто задавать составной синтаксис).
В этом случае те кому нужен плоский Variant — будут писать составное выражение, а если иерархический — то просто добавят скобки.
G>Получим variant[string, variant[int, variant[decimal, option[T]]]]. Что несколько не удобно, имхо. Если идти по такому пути, то надо иметь возможноть получать какой-нибудь variant[string, int, decimal, option[T]]
Вижу несколько вариантов:
1. Автоматически делать flatten, но только при условие что это сломает обобщённый код.
2. Дать возможность делать явный flatten.
3. Сделать выражение не просто if else, а составное if else if else if else, то есть что-то типа специального keyword'а elseif (но думаю что его вводить не обязательно, а просто задавать составной синтаксис).
В этом случае те кому нужен плоский Variant — будут писать составное выражение, а если иерархический — то просто добавят скобки.
Re[4]: Что должен возвращать if?
Здравствуйте, gbear, Вы писали:
G>Получим variant[string, variant[int, variant[decimal, option[T]]]]. Что несколько не удобно, имхо. Если идти по такому пути, то надо иметь возможноть получать какой-нибудь variant[string, int, decimal, option[T]]
Вижу несколько вариантов:
1. Автоматически делать flatten, но только при условии что это сломает обобщённый код.
2. Дать возможность делать явный flatten.
3. Сделать выражение не просто if else, а составное if else if else if else, то есть что-то типа специального keyword'а elseif (но думаю что его вводить не обязательно, а просто задавать составной синтаксис).
В этом случае те кому нужен плоский Variant — будут писать составное выражение, а если иерархический — то просто добавят скобки.
G>Получим variant[string, variant[int, variant[decimal, option[T]]]]. Что несколько не удобно, имхо. Если идти по такому пути, то надо иметь возможноть получать какой-нибудь variant[string, int, decimal, option[T]]
Вижу несколько вариантов:
1. Автоматически делать flatten, но только при условии что это сломает обобщённый код.
2. Дать возможность делать явный flatten.
3. Сделать выражение не просто if else, а составное if else if else if else, то есть что-то типа специального keyword'а elseif (но думаю что его вводить не обязательно, а просто задавать составной синтаксис).
В этом случае те кому нужен плоский Variant — будут писать составное выражение, а если иерархический — то просто добавят скобки.