Size: a a a

2021 January 22

МВ

Макс Воробьев... in dlang.ru
ну и опять таки это скорее тот код, который ты можешь поменять
источник

МВ

Макс Воробьев... in dlang.ru
в общем ситуация с захватом в лямбде плачевна, но понятна.
источник

МВ

Макс Воробьев... in dlang.ru
ну и опять таки наступишь на эту ситуацию один раз, если только на D сидишь
источник

МВ

Макс Воробьев... in dlang.ru
дальше помнить будешь
источник

DH

Dark Hole in dlang.ru
Надо писать DIP
источник

Т

Тающий звук... in dlang.ru
Думаю, что это замыкания повлияли
источник

Т

Тающий звук... in dlang.ru
Это же тоже к ним получается относится ?
источник

Т

Тающий звук... in dlang.ru
В цикле в лямду сунули k, а потом совсем из другого места пользуемся ей, когда уже время жизни k давно уже должно было закончится
источник

МВ

Макс Воробьев... in dlang.ru
Тающий звук
В цикле в лямду сунули k, а потом совсем из другого места пользуемся ей, когда уже время жизни k давно уже должно было закончится
вот тут и подвох. есть два стула
ink k = 3;
() { k.writeln() }; // <<
() { k += 1; }; // <<
источник

МВ

Макс Воробьев... in dlang.ru
когда захватить только значение, а когда - ссылку
источник

МВ

Макс Воробьев... in dlang.ru
и если захват по дефолту по ссылке, то как сделать захват только значения ?
источник

DH

Dark Hole in dlang.ru
Макс Воробьев
вот тут и подвох. есть два стула
ink k = 3;
() { k.writeln() }; // <<
() { k += 1; }; // <<
На одном жопа примерзнет, а на другом пики точёные
источник

Т

Тающий звук... in dlang.ru
Думаю. что в обоих случаях будет ссылаться на одну и ту же k
источник

МВ

Макс Воробьев... in dlang.ru
в ++ - явно пишешь как захватить
источник

МВ

Макс Воробьев... in dlang.ru
про python чет случаи перепутал
источник

МВ

Макс Воробьев... in dlang.ru
он тоже этим болен
источник

МВ

Макс Воробьев... in dlang.ru
In [1]: l = []

In [2]: for k in range(3):
  ...:     def f():
  ...:         print(k)
  ...:     l.append(f)
  ...:

In [3]: for f in l:
  ...:     f()
  ...:
2
2
2
источник

МВ

Макс Воробьев... in dlang.ru
хм
источник

МВ

Макс Воробьев... in dlang.ru
import std;

void main() {
   alias func = void delegate();
   func[] cbs;
   for (int k=1; k<=3; ++k) {
       int t = k;
       cbs ~= () => t.writeln;
       
   }
   foreach(d; cbs) d();
}
источник

МВ

Макс Воробьев... in dlang.ru
окей - k одна на весь цикл for, но t создается каждый раз заново
источник