Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Макрос и инлайн функция действительно вещи разные. Но я не об этом. Вот пример когда в момент компиляции значения аргументов неизвестны
В первом случае должна происходить вставка кода в текущую функцию (наверное), а во втором вызов функции с передачей параметров через стек (наверное). Но в целях оптимизации компилятор может и второй вариант реально реализовывать подстановкой. Так ли это? Я не знаю. Поэтому и спросил.
Объект эллипс выделятся мышью, только если кликать по точкам привязки.
Это баг или фича? Очень неудобно реализовано.
Это что, юмор такой чёрный?
1. Извини, - бред. Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать". Никакой опасности не вижу в упор. Смотрел внимательно, если чё. Любое имя, в конечном счёте есть ссылка. Индексация есть обычное расширение понятия имени. Не более. Давай запретим присваивание вообще. В целях безопасности. Ссылки же крайне опасны так?
2. Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева. Причём здравому смыслу и моему духу это почему-то не противоречит.
Индексаторы делаются для связи с внешней средой. Их функция именно интерфейсная. Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить? Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
4. Вот в этом месте у меня крыша конкретно начала ехать. Это что, нечитабельно??
Вот это читабельнее, да?
t.setDataElement(i, i*i);
Круто. Пожалуй пойду лечиться.
5. Ваще круто.
6. Я плакаль.
e(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
Ну преимущества у сеттера в том что можно делать что-то большее чем тупое приравнивание.
Например можно записывать информацию в лог, конвертировать данные (если речь идет о строках или более сложных данных), уравлять послылать сообщения другим обьектам если произошло какое нибудь важное событие (типа update data).
Kак ваш обьект узнает, что дата изменилась? Судя по всему вы там собираетесь хранить котировки..
А ну да, это ложная провлема, ведь у вас обьект больше как струкрура struct и толком ничем не управляет.
Все делается в другом классе-мусорке который занимается всем чем ни попадя или еще (что хуже) все происходит в onStart(), onTick(), ... ! :)
Хорошего вам дня
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
Мути прокладку. Правда по сравнению с нормальным lvalue будет намного дороже по времени исполнения. Но выглядеть будет так, как тебе нужно.
______
А, хрена с два. Тогда нужна перегрузка оператора приведения типа. Пичалька.
Ну преимущества у сеттера в том что можно делать что-то большее чем тупое приравнивание.
Например можно записывать информацию в лог, конвертировать данные (если речь идет о строках или более сложных данных), уравлять послылать сообщения другим обьектам если произошло какое нибудь важное событие (типа update data).
Kак ваш обьект узнает, что дата изменилась? Судя по всему вы там собираетесь хранить котировки..
А ну да, это ложная провлема, ведь у вас обьект больше как струкрура struct и толком ничем не управляет.
Все делается в другом классе-мусорке который занимается всем чем ни попадя или еще (что хуже) все происходит в onStart(), onTick(), ... ! :)
Хорошего вам дня
Фишка в том, что индексатор от сеттера по возможностям ничем не отличается. Только намного более удобным синтаксисом. Он точно так же реализуется в виде функции, содержимое которой может быть любым (простейший типичный случай - проверка границ массива и отработка прочих ошибок), и совсем не сводится к возвращению ссылки на элемент массива.
Вам тоже хорошего дня.
(Пардон за вчерашний тон. Был немного на взводе - неприятности на работе. Вы здесь ни при чём. Ну разве уж с категоричностью переборщили :)
Мути прокладку. Правда по сравнению с нормальным lvalue будет намного дороже по времени исполнения. Но выглядеть будет так, как тебе нужно.
______
А, хрена с два. Тогда нужна перегрузка оператора приведения типа. Пичалька.
На самом деле я думаю, что доделают. С возвратом ссылок в языке явная недоработка.
Необязательно делать ссылочные переменные, но возврат l-valuе из функций - святое.. :)
Не думаю, что это принципиально нерешаемо - обычные mql-массивы в языке есть и с обеих сторон от оператора присваивания отлично себя чувствуют. Но ведь они по реализации являются классами С++ !
Вот ещё пример из этой же серии. Вот этот код компилируется, но не работает.
Я это не к тому, что не должен компилироваться. Я к тому, что должен работать.. :)
...
Я это не к тому, что не должен компилироваться. Я к тому, что должен работать.. :)
В MQL5 есть замечательная константа IS_DEBUG_MODE, относящаяся к группе Прочие константы. Можно ли добавить подобную константу для тестера? Что-то типа IS_TESTER_MODE...
В MQL5 есть замечательная константа IS_DEBUG_MODE, относящаяся к группе Прочие константы. Можно ли добавить подобную константу для тестера? Что-то типа IS_TESTER_MODE...
А вот эти константы не подойдут?
ENUM_MQL5_INFO_INTEGER
Идентификатор
Описание
Тип свойства
MQL5_PROGRAM_TYPE
Тип mql5-программы
ENUM_PROGRAM_TYPE
MQL5_DLLS_ALLOWED
Разрешение на использование DLL для данной запущенной программы
bool
MQL5_TRADE_ALLOWED
Разрешение на торговлю для данной запущенной программы
bool
MQL5_DEBUGGING
Признак работы запущенной программы в режиме отладки
bool
MQL5_TESTING
Признак работы запущенной программы в тестере
bool
MQL5_OPTIMIZATION
Признак работы запущенной программы в процессе оптимизации
bool
MQL5_VISUAL_MODE
Признак работы запущенной программы в визуальном режиме тестирования
bool