Есть ли будущее у DELPHI?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.142] |
|
|
Правила раздела:
| Страницы: (245) « Первая ... 121 122 [123] 124 125 ... 244 245 ( Перейти к последнему сообщению ) |
Есть ли будущее у DELPHI?
|
Сообщ.
#1831
,
|
|
|
|
А в Дельфи что для этого есть? Класс-обертка может дать возможность прозрачно задавать значение элементам массива из энамов, как и в Дельфях. Если какой-то энам был удален, то как и в Дельфях увидим, что присваиваются значения несуществующему энаму. Но если энам был добавлен, то мы как и в Дельфи ничего не увидим, нет?
|
|
Сообщ.
#1832
,
|
|
|
|
Цитата [S]mike @ А в Дельфи что для этого есть? э-э-э. компилятор. TEnum = (en1, en2); TEnumArr: array[TEnum] of Integer = (1,2); добавили новый элемент в энум type TEnum = (en1, en2, en3); const TEnumArr: array[TEnum] of Integer = (1,2); // тут компилятор сказал, что кол-во элементов в массиве не соответсвует кол-ву элементов в энуме. |
|
Сообщ.
#1833
,
|
|
|
|
Цитата jack128 @ type TEnum = (en1, en2, en3); const TEnumArr: array[TEnum] of Integer = (1,2); // тут компилятор сказал, что кол-во элементов в массиве не соответсвует кол-ву элементов в энуме. LOL, такой изврат ни в Джаве, ни в дотнете не нужен. Это потому что в этих языках энамы являются расширяемыми классами, и не нужно делать соответствие энамов конкретным значениям через массивы. Java: ![]() ![]() public enum MyEnum { FIRST (1), SECOND (2), THIRD (3); public final int number; private MyEnum(int number) { this.number = number; } } Имеем: FIRST.number, SECOND.number... Что гораздо удобнее и нагляднее. |
|
Сообщ.
#1834
,
|
|
|
|
Цитата [S]mike @ LOL, такой изврат ни в Джаве, ни в дотнете не нужен. Это потому что в этих языках энамы являются расширяемыми классами, и не нужно делать соответствие энамов конкретным значениям через массивы. во первых в .NET'е енумы - это НЕ классы. Во вторых - нужен. Потому что мне _не_ нужно, чтобы сборка(или как оно там в джаве называется) в которой находится энум знала обо всех данных, ассоциированных с этим энумом. Иначе получится некий God object, со всеми вытекающими.. |
|
Сообщ.
#1835
,
|
|
|
|
Цитата jack128 @ во первых в .NET'е енумы - это НЕ классы. судя по MSDN System.Enum - это класс, правда он наследуется от System.ValueType |
|
Сообщ.
#1836
,
|
|
|
|
Цитата --Ins-- @ Можно. Линейная интерполяция. Для одномерного случая: y' = y1 + (x' - x1)*(y2 - y1) Для двумерного - прикинь с листиком и карандашом, не намного сложнее. Интерполируем сначала по одной оси, потом - по другой А можно код? |
|
Сообщ.
#1837
,
|
|
|
|
Цитата korvin @ А можно код? А сам не напишешь? |
|
Сообщ.
#1838
,
|
|
|
|
Цитата --Ins-- @ А сам не напишешь? нет. |
|
Сообщ.
#1839
,
|
|
|
|
Цитата jack128 @ Во вторых - нужен. Потому что мне _не_ нужно, чтобы сборка(или как оно там в джаве называется) в которой находится энум знала обо всех данных, ассоциированных с этим энумом. Иначе получится некий God object, со всеми вытекающими.. Ну так в Map закидать с проверкой, является ли количество элементов в мапе равным количеству самих энамов. Надо просто мыслить шире. В Дельфи - это топорный примитивный низкоуровневый механизм (энамы и их массивы, сеты имею ввиду), имеющий кучу недостатков. Например, как мне посчитать количество элементов в сете? |
|
Сообщ.
#1840
,
|
|
|
|
Цитата [S]mike @ Например, как мне посчитать количество элементов в сете? ![]() ![]() Count:=0; for Item in MySet do Inc(Count); А зачем это может потребоваться? |
|
Сообщ.
#1841
,
|
|
|
|
[S]mike
откладывать проверки на ран тайм - это не вариант. я прекрасно понимаю,что у дельфиских энумов вагон вариантов. Но возможность создать массив с энумом-индексатором - это приемущество. |
|
Сообщ.
#1842
,
|
|
|
|
Цитата jack128 @ Но возможность создать массив с энумом-индексатором - это приемущество. А чем твой массив, кстати, отличается от "God object"? Тоже все данные в одном месте. Почему их нельзя задавать в конструкторе enum-типа - каждому энаму отдельно? А что будет, если энамы поменять местами? Компилятор тоже выдаст ошибку? Еще один аргумент за то, что данные должны храниться вместе с энамами. Забыть задать какое-то значение в этом случае невозможно, так как не будет соответствующего конструктора. Где в дельфи такая гибкость? Добавлено Цитата Shaggy @ А зачем это может потребоваться? Ну как зачем? Если серьезно использовать энамы - еще как может понадобиться. В Джаве для этого есть целый класс EnumSet - полноценная дженерик коллекция. Например, есть у тебя список цветов автомобилей в виде такого множества. Нужно отобразить, сколько всего этих цветов доступно для конкретного автомобиля. Тот метод что ты привел - топорный и кустарный. Все равно что передвигать мышь попиксельно, чтобы задать ей позицию на экране. |
|
Сообщ.
#1843
,
|
|
|
|
Цитата [S]mike @ Тот метод что ты привел - топорный и кустарный. Все равно что передвигать мышь попиксельно, чтобы задать ей позицию на экране. я показал, что способ есть... довольно простой способ... Цитата [S]mike @ Например, есть у тебя список цветов автомобилей в виде такого множества. Нужно отобразить, сколько всего этих цветов доступно для конкретного автомобиля. а что тебе даёт это знание? вот знание, доступен ли какой-то цвет, полезно... а если всётаки нужно, то и используй подходящий контейнер - список/коллекцию |
|
Сообщ.
#1844
,
|
|
|
|
Цитата Shaggy @ а если всётаки нужно, то и используй подходящий контейнер - список/коллекцию В Дельфи нету специальных контейнеров для энам-типов. То есть если загнать энамы в какой-то обычный дженерик-контейнер - будет работать медленно и неэффективно. В сетах быстро, так как имплементированы они используя битовую арифметику. Цитата Shaggy @ а что тебе даёт это знание? Отобразить количество доступных цветов Да примеров на самом деле масса. Количество не нужно только еси это список состояний объекта, например - там только contains нужен. |
|
Сообщ.
#1845
,
|
|
|
|
видимо на мой вопрос все забили. Повторяю дамы и господа уважаемые. Умеет ли делфи какой-нибудь версии искаропки без доп софта работать с такими штуками как например git, svn, etc.?
|