Tinplz #1841 20 ноября 2013 Странно, мне казалось что в с# есть имплисит конверсия инта в бул.Не знаю даже, хорошо это или плохо. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1842 20 ноября 2013 (изменено) действительно, помнится "abc" ещё и отдаёт истину в некоторых языкахкак и "1234" == 1234567 или что-то подобноеумно, не так ли? Странно, мне казалось что в с# есть имплисит конверсия инта в бул.Не знаю даже, хорошо это или плохо.более того, кастить инт в булев тоже нельзя, только Convert.ToBoolean() Изменено 20 ноября 2013 пользователем TheDeadSkin Поделиться сообщением Ссылка на сообщение
rubish #1843 20 ноября 2013 а в жс, думаю и в других языках тоже, для очевидности что вырожение булеаново, или должно быть приведенно к нему, можно использовать двойное отрицание.думаю, что в языках со статической типизацией из сигнатуры функции видно, что она возвращает.ну а такие кустарные изыски только подчеркивают, что жс еще та поделка Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1844 20 ноября 2013 а в жс, думаю и в других языках тоже, для очевидности что вырожение булеаново, или должно быть приведенно к нему, можно использовать двойное отрицание.думаю, что в языках со статической типизацией из сигнатуры функции видно, что она возвращает.ну а такие кустарные изыски только подчеркивают, что жс еще та поделкаэто просто компилятор недостаточно умный я ещё после с++ 6.0 который немного учил в школе на доп занятиях по программированию с нашей информатичкой запомнил что если входная точка int main(), то она обязана сделать return 0 потому что обязана вернуть и вернуть именно инт наверное кроме базового си-синтаксиса это было самое полезное что я там выучил и никто не жаловался что компилятор тупой Поделиться сообщением Ссылка на сообщение
Tinplz #1845 20 ноября 2013 auto foo = [] {return 2; }; if (foo()){ } не знаю ваших проблем Поделиться сообщением Ссылка на сообщение
rubish #1846 20 ноября 2013 auto foo = [] {return 2; }; if (foo()){ } не знаю ваших проблемнашел чем хвастаться Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1847 20 ноября 2013 а чем оно от var/dynamic отличается? я заменил возвращаемый тип на dynamic но вполне ожидаемо поймал ошибку о невозможности приведения int в bool, только в райнтайме уже Поделиться сообщением Ссылка на сообщение
Tinplz #1848 20 ноября 2013 а чем оно от var/dynamic отличается? я заменил возвращаемый тип на dynamic но вполне ожидаемо поймал ошибку о невозможности приведения int в bool, только в райнтайме ужеТем что я с таким же успехом мог написать std::function<int()> foo = [] {return 2; }; потому что оно именно к нему приводится.В с++ проверки и определения типов производятся во время компиляции, за исключением RTTI и применения виртуального наследования. Поэтому - раз не ругнулось будет работать. Вопрос уже в том, так ли, как ты хотел. Но это уже относится к знания языка и внимательности при написании кода :) В этом вопросе c# попроще. Поделиться сообщением Ссылка на сообщение
KotZhilkina #1849 20 ноября 2013 Умный компилятор и сам сможет раскрыть без потерь в производительностиа умный компилятор это какой? обсуждали уже тернарные конструкции в шарпе Публикация отключена Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1850 20 ноября 2013 ну тогда это var, раз во время компиляции что в нём особенного в таком случае? обсуждали уже тернарные конструкции в шарпеа это тут при чём если вопрос в if (int) Поделиться сообщением Ссылка на сообщение
Tinplz #1851 20 ноября 2013 А с чего ты взял, что в нем есть что-то особенное? Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1852 20 ноября 2013 ну ты пишешь "не знаю ваших проблем"значит пытался противпоставить это кусок кода каким-то проблемам там из заметного есть auto, анонимная функция, if (int)что из этого и каким именно проблемам ты пытался противопоставить? Поделиться сообщением Ссылка на сообщение
Tinplz #1853 20 ноября 2013 проблема отсутствия исмплисит конверсия инта в бул. Хотя некоторое считают что наоборот, ее наличие и есть проблема. Я вообще ни в том, ни в том проблемы не вижу, т.к. это больше вопрос соотношения удобство/безопасность. А тут уже каждый выбирает сам. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1854 20 ноября 2013 удобство/безопасностьнеудобство в процессе написания кода и рядом не стоит по сравнению с неудобствами которые доставит дыра в безопсности правда и про недобство написания кода это тоже вопрос спорный Поделиться сообщением Ссылка на сообщение
Tinplz #1855 20 ноября 2013 Тут дело привычки. Я уже привык так сравнивать, и всегда смотрю что конкретно сравниваю и с чем. Поэтому конкртено в этом месте шанс ошибиться такой же, как и в любом другом месте в коде Поделиться сообщением Ссылка на сообщение
KotZhilkina #1856 20 ноября 2013 обсуждали уже тернарные конструкции в шарпеа это тут при чём если вопрос в if (int)а что тут еще обсуждать можно, если неявная конверсия между целочисленными и булевым типами была осознанно запрещена разработчиками? Странно, мне казалось что в с# есть имплисит конверсия инта в бул.Не знаю даже, хорошо это или плохо.нeт Публикация отключена Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1857 20 ноября 2013 обсуждали уже тернарные конструкции в шарпеа это тут при чём если вопрос в if (int)а что тут еще обсуждать можно, если неявная конверсия между целочисленными и булевым типами была осознанно запрещена разработчиками?ты как будто не читаешь куда отвечались посты которые квотишьтин писал про умный компилятор который просечёт фишку с if (int)я запостил скрин при чём тут вообще твои загоны по ?: которые никаким боком не относятся к тому что мы обсуждали? Поделиться сообщением Ссылка на сообщение
Двапой #1858 20 ноября 2013 а в жс, думаю и в других языках тоже, для очевидности что вырожение булеаново, или должно быть приведенно к нему, можно использовать двойное отрицание.думаю, что в языках со статической типизацией из сигнатуры функции видно, что она возвращает.ну а такие кустарные изыски только подчеркивают, что жс еще та поделкаС чего бы это подделка? Вполне логично что в не строго типизированных языках каждый тип имеет свое булеаново значение. Поэтому его отрицание даст как раз булеан. А отрицание булеана тоже булеан.Так что все логично и продумано. Можно даже сказать что язык сделан для людей, а не для компиляторов. Как это сделано в шарпе, где даже инт нельзя подставить в условие, лол. Мобильное приложение для продоты https://play.google....id=ru.prodota.m Поделиться сообщением Ссылка на сообщение
Tinplz #1859 20 ноября 2013 Когда я это писал, то предполагал, что возможность этой конверсии существует. Оказалось нет.В с++ существует много различных компиляторов, и каждый с разными возможностями по оптимизации. Даже существует такое достаточно условное определение "smart compiler", которым все пользуются. То есть предполагая что для этой конструкции может быть применена какая-либо оптимизация. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #1860 20 ноября 2013 язык сделан для людей, а не для компиляторов. Как это сделано в шарпе, где даже инт нельзя подставить в условие, лол.чот с голос язык для людей-гуманитариев чтоли? или с каких пор крокодил плюс два делёное на истину равняется компьютерной мышке? Поделиться сообщением Ссылка на сообщение