Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не существует нормального приведения стринга к булу.
Это вопрос договоренности.
В MQL достаточно таких мест, которых "не бывает", но они все же есть.
Чем может навредить приведение "0" и "false" к false, а всего остального — к true?
Опять же, не забываем, что речь о явном приведении.
Если Вы по ошибке присвоите булу строку, и при этом не будет неоднозначности, компилятор не будет требовать явного преобразования.
Он просто молча преобразует, а Вы потом будете долго искать эту ошибку.
Если Вы по ошибке присвоите булу строку, и при этом не будет неоднозначности, компилятор не будет требовать явного преобразования.
Он просто молча преобразует, а Вы потом будете долго искать эту ошибку.
Видимо, не понимаю о чем идёт речь. Можете привести пример, когда это приведение будет иметь место без моего явного и намеренного (bool)string_var?
В простом примере Вы с этим может и не столкнётесь, а в сложной программе за всем не уследишь.
Часто приходится переписывать участки кода и заменять одни функции другими.
Например, Вы можете заменить вызов одной функции на похожую, но возвращающую не bool, а string.
Скорее всего просто не доделано, забили разработчики и все.
Не стали голову ломать, тру ли -1, или фальш.
Даблы-то из каких угодно строк приводятся:
double z=(double)"1d3"; // работает
А перегруженная функция для bool очень даже не плохо. Можно даже всякие "yes" и "now" правильно преобразовать. Да и для даблов хорошо иметь отдельную функцию, чтобы менять запятую на точку.
В простом примере Вы с этим может и не столкнётесь, а в сложной программе за всем не уследишь.
Часто приходится переписывать участки кода и заменять одни функции другими.
Например, Вы можете заменить вызов одной функции на похожую, но возвращающую не bool, а string.
Не могу представить ситуацию, где вот так вот просто заменю бул на стринг.
Ну, а если в коде (string)some_thing, то нужно быть в любом случае внимательным.
Скорее всего просто не доделано, забили разработчики и все.
Не стали голову ломать, тру ли -1, или фальш.
Даблы-то из каких угодно строк приводятся:
double z=(double)"1d3"; // работает
А перегруженная функция для bool очень даже не плохо. Можно даже всякие "yes" и "now" правильно преобразовать. Да и для даблов хорошо иметь отдельную функцию, чтобы менять запятую на точку.
Начнем с терминологии. Не бывает true и false, бывает набор из 8/16/32/64 бит. У них справка, конечно для недоджунов написана, но принцип тот же 0×0 - false, все остальное true. Так, что любая строка, ненулевой длины - это true. Теперь про приведение их string к различным типам. В принципе никаких проблем реализовать это нет, но тогда следующая тема будет: "я хочу проверить строку на пустоту написав if(!var), ЧТО РАЗВЕ СЛОЖНО РЕАЛИЗОВАТЬ???". ИМХО: нефиг реализацию всяких невнятных вещей просить, даже каст string->int/double считаю, что зря сделан. Кому надо - пишите свою обертку над string и там изголяйтесь как хотите.
Сам дурак.
Видимо, не понимаю о чем идёт речь. Можете привести пример, когда это приведение будет иметь место без моего явного и намеренного (bool)string_var?
Какой будет результат?
Нет, не забили.
Явное приведение из-за этого же пострадало?
"if ( some_string )" ведь не то же самое, что "(string)some_string"?