Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Кнопка Compile теряется навсегда (нужно перезагружать редактор чтобы вернуть)
Ну не совсем.. :) Мне удалось вернуть :)
Для этого нужно рекурсивный кусок закоментировать и нажать кнопку отладочной компиляции.
1. "Выдавать" внутренние не базовые элементы класса в наружу (а в данном примере не сам атрибут, а только элемент массива !) тем более с возможностью изменить его значение - не безопасно.
2. К тому же это противоречит "духу" обьектного ориентированного програмирования: всю работу с данными обьекта нужно стараться выполнять внутри обьекта, его же методами..
3. А как насчет того чтобы просто использовать Setter для аттрибута data ?
4. Код только выиграет по читабельности.
5. В конечном итоге эта "простота" с l-value индексатором сделает так что никто включая вас не будет понимать как этот код работает..
6. Потратите больше времени на поиск ошибок чем на написание Setter.
Это что, юмор такой чёрный?
1. Извини, - бред. Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать". Никакой опасности не вижу в упор. Смотрел внимательно, если чё. Любое имя, в конечном счёте есть ссылка. Индексация есть обычное расширение понятия имени. Не более. Давай запретим присваивание вообще. В целях безопасности. Ссылки же крайне опасны так?
2. Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева. Причём здравому смыслу и моему духу это почему-то не противоречит.
Индексаторы делаются для связи с внешней средой. Их функция именно интерфейсная. Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить? Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value); Заодно и в читабельности выиграем. Да и отладка станет куда проще. Мля. Уф..
3. А как насчёт того, чтоб сделать нормальный индексатор? Горничная это конечно классно, но королева всё-таки лучше.
4. Вот в этом месте у меня крыша конкретно начала ехать. Это что, нечитабельно??
Вот это читабельнее, да?
t.setDataElement(i, i*i);
Круто. Пожалуй пойду лечиться.
5. Ваще круто.
6. Я плакаль.
На 630 билде перестал компилироваться индикатор:
ошибку c i можно убрать если объявление вынести перед for
А что делать с 'rates_total' - undeclared identifier ?
Одинаково на Win7 x64 и XP x32.
Подскажите, пожалуйста. MathMin() и MathMax() реализованы как функции (с передачей параметров через стек) или макроподстановкой (inline)? Судя по справочнику это - функции.
На 630 билде перестал компилироваться индикатор:
ошибку c i можно убрать если объявление вынести перед for
А что делать с 'rates_total' - undeclared identifier ?
Одинаково на Win7 x64 и XP x32.
У Вас явно где-то ошибка в коде. Предъявленный блок компилируется без ошибок, если объявить переменные limit, RT и задать условие if()
Естественно, ведь я привел не код, а его примерную структуру.
На 619 билде индикатор компилировался и отлично работал.
На 630 выдает указанные ошибки.
Код 100% не изменялся. Явно изменилась работа компилятора.
Баг?
Код приведенный ниже генерирует что-то типа вечного цикла в компиляторе. Нажатие на Cancel (отмена компиляции)
срабатывает не сразу, а когда стабатывает, возвращает контроль над редактором.
При этом сама кнопка Cancel не исчезает, но и не остается доступной..
Кнопка Compile теряется навсегда (нужно перезагружать редактор чтобы вернуть)
Подскажите, пожалуйста. MathMin() и MathMax() реализованы как функции (с передачей параметров через стек) или макроподстановкой (inline)? Судя по справочнику это - функции.
Конечно функции, ведь в момент компиляции неизвестны значения аргументов. ИМХО inline и макроподстановки вещи разные.
P.S: inline они или не inline сказать не могу.
Конечно функции, ведь в момент компиляции неизвестны значения аргументов. ИМХО inline и макроподстановки вещи разные.
P.S: inline они или не inline сказать не могу.
Макрос и инлайн функция действительно вещи разные. Но я не об этом. Вот пример когда в момент компиляции значения аргументов неизвестны
В первом случае должна происходить вставка кода в текущую функцию (наверное), а во втором вызов функции с передачей параметров через стек (наверное). Но в целях оптимизации компилятор может и второй вариант реально реализовывать подстановкой. Так ли это? Я не знаю. Поэтому и спросил.