Ivan
Парни, а вы любите тернарники и длинные цепочки вызовов лепить? return foo().bar().baz(bee() == gee() ? koo() : laa(), str, tmp);
Berkus
а я не советовал буст, я советовал опенсорсные проекты на плюсах
vladislav
пример тогда
Крылатый
Я вам тут покушать принёс! https://wandbox.org/permlink/tMvfacVHorVsPZAS
Berkus
читать буст в принципе не советую
Крылатый
Парни, а вы любите тернарники и длинные цепочки вызовов лепить? return foo().bar().baz(bee() == gee() ? koo() : laa(), str, tmp);
Я вот запилил штуку для вызовов цепочкой (см. ссылку чуть выше). Так что да.
Berkus
монаду бы вам в тухес, батенька
Ivan
Вот. Ощущаешь себя крутым? Я тоже ощущал. Пока не пришлось сесть за чужой такой же Крутой Код и отлаживать его
Крылатый
Для гроздьев if-ов есть стейт машины.
Ivan
Вот как узнать в gdb какой результат подставит тернарники
Ильяс
тебе надо начать ЧИТАТЬ опенсорсные проекты на плюсах и задавать вопросы
Понял, спасибо. Только на плюсах найти опенсорс у меня не вышло.
Ильяс
http://www.boost.org/users/uses_open.html Это он?
Крылатый
В соседнем плюсочате обычно советуют личкрафты.
Nikita
Я вот запилил штуку для вызовов цепочкой (см. ссылку чуть выше). Так что да.
Нет бы лямбду создать на месте и вызвать — скучно делать удобно?
Крылатый
Лямбды там и так есть.
Крылатый
Но там ещё проверка на null имеется с выполнением соответствующей ветки кодца.
vladislav
Мм, так он и правда существует. Боже, почему я просто ору?
vladislav
#ultramegapro
vladislav
я думал ты угараешь
Nikita
чем тебе поможет лямбда для цепочек?
return делаешь, когда цепочка обрывается — просто, понятно, визуально
Berkus
Чо?
да он гонит
Berkus
А надо-то что ещё?
цепочка дальше будет выполняться, надо ее прерывать
Крылатый
Не, ну можно делать так: [value](){ if (value) return [*value]{ return func(value) }; else return []{}; }();
Крылатый
Утрированно.
Крылатый
Но это громоздко.
Крылатый
А я как раз хотел избавиться от if
Berkus
и в итоге код будет жырноват кмк
Berkus
на каждую лямбду по объекту
Nikita
цепочка дальше будет выполняться, надо ее прерывать
Ну так выходишь из лямбды и прерываешь
Ivan
Теперь, у меня привычка писать самый нудный код в мире. const auto a = foo(); const auto b = a.bar(); auto l = bee(); auto g = gee(); bool isValid = l == g; if (isValid) b.koo(); else b.laa() ... Я просто с телефона, но это не предел занудности
std::mpa 🇺🇦
https://vk.com/wall-54530371_128409
Ivan
Зато отлаживать удобно
Олександр
Опенсурс это хорошо, но я зашел на проект OpenStack и потерялся. Что делать куда идти, но попробую еще раз.
Как правило лучше всего спросить кураторов проекта. В зависимости от проекта они бывают отзывчивые:)
Nikita
нарисуй пример позязя
Будет громоздко и с if-ами, зато читабельно
Ilya
Хану можно почитат. Очень симпатично. :)
Олександр
Компилятор то соптимизирует, но ненужных переменных то много :/
Nikita
[value&](){ if (!value) return; if (!proc1(value)) return; ... }();
Крылатый
Чот как-то фу.
Олександр
Олександр
Зато нет вложенности никакой, код чище
Крылатый
If-return?
Громоздко и не вижу профита. Легче просто if накидать.
Ivan
Это ж ппц, в дебаггере можно легко смотреть autos
Если ты пользуешься ide, то тебе придется заходить внутрь выражения, чтобы узнать что вычислилось. А так ты брейкпонит в конце фунцкии поставил и всё видишь
Nikita
Чот как-то фу.
Монада Maybe лучше бы зашла, но тернарки не особо лучше выглядят
Nikita
Но хаскеллисты в другом чате
Олександр
Громоздко и не вижу профита. Легче просто if накидать.
Если их много, то будет куча ненужной вложености
Ivan
В Visual Studio есть autos - показывает возвращаемые значения фунций
Прикольно; в Qt Creators gdb нельзя увидеть, что вернула функция из цепочки вызова
Олександр
Но это вкусовщина на уровне скобочек
Олександр
Не подскажу где, давно не пользовался
Nikita
Ну вот чем здесь не монада вышла?)
Тем, что грязной императивщиной пахнет)
Dr. Friedrich
Монада и императивщина не исключают друг друга.
Dr. Friedrich
Монада — это набор функций, обладающих определёнными свойствами и сигнатурами, и всё.
Крылатый
Воот!
Крылатый
Слушайте умного дядю Нёвера.
Berkus
Опенсурс это хорошо, но я зашел на проект OpenStack и потерялся. Что делать куда идти, но попробую еще раз.
почему именно OpenStack? я не вижу смысла начинать со сложных проектов с большим количеством движущихся частей
Крылатый
Я ему уже предложил вот это https://github.com/leha-bot/GuncraftExtractor
Berkus
https://github.com/leereilly/games вот тут можно порыться еще
Ivan
почему именно C++? я не вижу смысла начинать со сложных языков с большим количеством движущихся частей
Крылатый
В том-то и вся беда.
ep
OpenStack разве не на Python написан?
Dr. Friedrich
Я ему уже предложил вот это https://github.com/leha-bot/GuncraftExtractor
А у меня есть мандельбро! https://github.com/ForNeVeR/Mandelbrot