Size: a a a

2021 July 09

EP

Egor Pugin in dlang.ru
ну чтобы рекурсивный проход по джсону не вылезал в класс, в другие функции
источник

Е

Евгений in dlang.ru
Чем простая рекурсивная функция не подошла?
источник

Е

Евгений in dlang.ru
А что плюсы не дают сделать вложенную функцию?
источник

EP

Egor Pugin in dlang.ru
это эксперимент был
источник

Е

Евгений in dlang.ru
Вроде можно уже, нет?
источник

EP

Egor Pugin in dlang.ru
ну где как
источник

DH

Dark Hole in dlang.ru
источник

EP

Egor Pugin in dlang.ru
в сишке как гцц расширение есть, а так нельзя
источник

Е

Евгений in dlang.ru
Да, нельзя. Лол
источник

DH

Dark Hole in dlang.ru
Современно
источник

Е

Евгений in dlang.ru
В D вместо изврата с лямбдой можно вот так написать:
int foo() {
   int count(int i) {
       if (i == 5) return i;
       return count(i + 1);
   }

   return count(0);
}

int main() {
   return foo();
}
источник

DH

Dark Hole in dlang.ru
Короче лямбды (в плюсах) overcomplicated какие-то
источник

Е

Евгений in dlang.ru
А можно и с замыканиями какими хочешь:
int c = 2;

int foo(int b) {
   int count(int i) {
       if (i > 5) return i;
       return count(i + b + c);
   }

   return count(0);
}

int main() {
   return foo(1);
}
источник

Е

Евгений in dlang.ru
И никаких аллокаций заметьте.
источник

DH

Dark Hole in dlang.ru
пока не возвращаешь за пределы функции
источник

Е

Евгений in dlang.ru
Не, они простые на самом деле. И у них есть свои фишки.
источник

Е

Евгений in dlang.ru
Ну так в моем примере и не возвращается за пределы функции.
источник

Е

Евгений in dlang.ru
Плюсовые лямбды чем хороши, что их можно аллоцировать как угодно. Хошь на стеке, хошь в куче или каком-то своем модном аллокаторе.
Дешные либо вообще не аллоцируются если это возможно, либо прибиты гвоздями к GC.
источник

Е

Евгений in dlang.ru
Но это не сильно мешает, так как я всегда могу запилить лямбду по старинке, через структуру.
источник

EP

Egor Pugin in dlang.ru
там ренжи сейчас на это можно применить
https://godbolt.org/z/Tn3r39x8P
источник