Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2012, 18:48   #11
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,692
По умолчанию

Цитата:
ну в С++ до С++11 оно в принципе криво было.
как в посту №4.

с появлением enum class оно стало более менее работать.
Да, но они все также отображаются на множество целых чисел, из-за чего подобный код никогда не заработает:
Код:
enum class DollarAmount : float {dollars};
enum class EuroAmount : float {euros};

DollarAmount euroToDollar(EuroAmount d)
{
    return <dollars = float(d) * 0.883> as DollarAmount;
}

EuroAmount dollarToEuro(DollarAmount d)
{
    return <euros = float(d) * 1.1325> as EuroAmount;
}
По той простой причине, что я не могу изменить отображение полей экземпляра перечисления.
Это можно сделать с помощью typedef в D, но в C++ мы хоть и получим рабочий код, но работать он будет не так как это требуется:
Код:
typedef float Dollar;
typedef float Euro;

Dollar euroToDollar(Euro e)
{
    return Dollar(e * 0.883);
}

Euro dollarToEuro(Dollar e)
{
    return Euro(e * 1.1325);
}
Все бы хорошо, но:
Код:
Dollar ClientBalance;
euroToDollar(euroToDollar(ClientBalance));
Решается это например так:
Код:
struct Dollars
{
...
};
struct Euros
{
...
};
Зачем такие приблуды нужны? Все просто, ограничить возможности в написании бессмысленного кода. Про такие конструкции я вообще молчу:
Код:
void foo(){foo();}
Такие приблуды должны запрещаться или определенным образом разрешаться(решение) на уровне языка.
Kostia вне форума Ответить с цитированием
Старый 04.12.2012, 21:23   #12
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Utkin
Цитата:
а может и ректально
Аххххахаа, ректальный Уткин, звучит просто офигенно. :D

По поводу диапазонов Billy, имхо, логично предположил, что возможно в инфраструктуре мелкомягких где-то эти значения мапятся в бд.

У меня есть ещё одно ректально/оральное развитие вопроса.

В нашем коде. Есть много мест где вместо указания массива из конкретных членов енума.
{EnumClass.member1, EnumClass.member1, EnumClass.member1}

Массив заполняется их числовыми кодами.
{34,56,23}

И вообще к ним обращаются через их числовые значения.
Вместо if(itemType == SPListTemplateType.WebPageLibrary)

Пишется что то вроде if((int)itemType == 119).

Я бы не заморачивался, но таких мест много, какой может быть резон так писать?
the_deer_one вне форума Ответить с цитированием
Старый 04.12.2012, 21:28   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну сравнеие с числом всегда быстрей, чем с полем, которое может оказаться и не полем. Больше не вижу смысла. Да и Вам уже сказали, что это совсем не по фень-шую
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод значения числа в десятичной системе счисления Kaizzer Помощь студентам 0 23.04.2011 14:44
Изменение значения числа при увеличении разрядности PARTOS Microsoft Office Excel 5 25.02.2011 20:56
Даны действительные числа а0 ,..., а6 . Получить для х=1,3,4 значения p(x+1)-p(x), где LiptonICE Помощь студентам 6 29.05.2010 23:27
Pascal нахождение точного значения числа Зорянка Помощь студентам 6 01.07.2009 13:47
SOS, исчезли формулы,остались лишь значения (числа) lyolya Microsoft Office Excel 2 30.07.2008 14:41