Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1333
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нет. Там условие изначально поставлено так, если указатель создан успешно, то добавить его в список. Кривая скобка закрыта и если произошёл сбой, то просто добавление не будет выполняться. А с оператором continue; логика чуток другая, но результат тот-же.
Да, результат одинаков, внутри разно. По мне с континью быстрее, хотя на цвет и на логику ....
Артем, а для чего здесь используется ключевое слово this ? Ведь и без него методы будут работать с членами класса...
Будут. Я использую потому, что так хочу :) Это явно указывает методы какого именно класса используются.
Если у вас есть два класса - один родительский, а второй соответственно - наследник, и в них определены два метода с одинаковыми именами, но они не являются виртуальными по некоторым соображениям, то тут придётся явно указывать какой метод нужно использовать.
Допустим родительский класс - это CParent, а наследуемый класс - это класс CInherited, и они оба имеют метод Method().
В этом случае, если мы в родительском классе CParent вызываем метод Method(), то однозначно будет вызван метод класса CParent - здесь this не обязателен. Можно вызывать метод как с ним, так и без него.
Если мы в наследуемом классе CInherited вызовем метод Method(), то будет вызван тоже метод этого класса, так как сначала ищется метод, принадлежащий тому классу, из которого был его вызов.
Если мы в наследуемом классе CInherited вызовем этот метод таким образом CParent::Method(), то будет вызван уже метод родительского класса, так как тут мы явно оператором разрешения контекста указали метод, принадлежащий родительскому классу.
Но всё же я бы вызывал метод Method() в наследуемом классе CInherited с указанием this - чтобы быть точно уверенным, что будет вызван метод именно этого (this == "этот") наследуемого класса.
Есть и другие объяснения использования this. Может кто более опытный в ООП расскажет.
Да, результат одинаков, внутри разно. По мне с континью быстрее, хотя на цвет и на логику ....
Не должно быть никакой разницы. Просто для меня так приятнее код выглядит - меньше загружен скобками и отступами.
- Поскольку функция CopyTime возвращает значение, то пусть возвращает в переменную, от этого хуже не будет… В случае отладки можно будет проверить что получилось.
- this писал Артём. Видимо это личные предпочтения. Некоторые, надо — не надо пишут ::
ps; Я только сейчас заметил что тип переменной ret datetime… Конечно должна быть типа int. Ну да ладно, тоже надо будет исправить…Ну да. Я один из этих "некоторых", особенно, когда из класса вызываю стандартную функцию, то обязательно указываю глобальный контекст. Просто из-за того, что могу вздумать в этом классе прописать метод с таким же именем, как у стандартной функции - чтобы никогда не забыть что он делает. И вот тогда-то и пригодятся :: для вызова стандартной функции, а this - для вызова моего одноимённого метода.
Не должно быть никакой разницы. Просто для меня так приятнее код выглядит - меньше загружен скобками и отступами.
Для одной проверки (if) да, но в коде две, а если их много, то логика Если Да, континью и новая итерация цикла, Иначе действие А логика Если Нет тогда действие иначе переход к следующему условию Если нет. В этом случае тело цикла пройдет до конца.
Для одной проверки (if) да, но в коде две, а если их много, то логика Если Да, континью и новая итерация цикла, Иначе действие А логика Если Нет тогда действие иначе переход к следующему условию Если нет. В этом случае тело цикла пройдет до конца.
Ничё не понял, но пусть так.
Будут. Я использую потому, что так хочу :) Это явно указывает методы какого именно класса используются.
Если у вас есть два класса - один родительский, а второй соответственно - наследник, и в них определены два метода с одинаковыми именами, но они не являются виртуальными по некоторым соображениям, то тут придётся явно указывать какой метод нужно использовать.
Допустим родительский класс - это CParent, а наследуемый класс - это класс CInherited, и они оба имеют метод Method().
В этом случае, если мы в родительском классе CParent вызываем метод Method(), то однозначно будет вызван метод класса CParent - здесь this не обязателен. Можно вызывать метод как с ним, так и без него.
Если мы в наследуемом классе CInherited вызовем метод Method(), то будет вызван тоже метод этого класса, так как сначала ищется метод, принадлежащий тому классу, из которого был его вызов.
Если мы в наследуемом классе CInherited вызовем этот метод таким образом CParent::Method(), то будет вызван уже метод родительского класса, так как тут мы явно оператором разрешения контекста указали метод, принадлежащий родительскому классу.
Но всё же я бы вызывал метод Method() в наследуемом классе CInherited с указанием this - чтобы быть точно уверенным, что будет вызван метод именно этого (this == "этот") наследуемого класса.
Есть и другие объяснения использования this. Может кто более опытный в ООП расскажет.
Артем, большое спасибо за столь развернутый ответ, который меняет в лучшую сторону отношение к ООП)
как могу реялного счета открит
1. Выбрать брокера.
2. Выбрать платформу, МТ4 или МТ5.
3. Открыть у брокера реальный счёт.
Ну да. Я один из этих "некоторых", особенно, когда из класса вызываю стандартную функцию, то обязательно указываю глобальный контекст. Просто из-за того, что могу вздумать в этом классе прописать метод с таким же именем, как у стандартной функции - чтобы никогда не забыть что он делает. И вот тогда-то и пригодятся :: для вызова стандартной функции, а this - для вызова моего одноимённого метода.
Артём, это уже опровергает вторую часть выражения «надо — не надо». Надо, значит надо. Нет возражений…