- 1
- 2
- 3
- 4
- 5
auto r = [&](){
for(auto i: a)
if(i==k)
return f(i);
}();
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+7
auto r = [&](){
for(auto i: a)
if(i==k)
return f(i);
}();
Однажды мне знакомый рассказывал, что во многих языках плохие грязные циклы. Мол настоящие чистые циклы должны возвращать значение. Я написал ему вот это. Он многозначительно подумал и замолчал. Через две с половиной недели он уволился.
tirinox 15.12.2013 00:27 # +6
LispGovno 15.12.2013 01:02 # +3
anonimb84a2f6fd141 15.12.2013 01:50 # +6
ВСЕ ПРОСТО И ПОНЯТНО
LispGovno 15.12.2013 02:02 # +2
anonimb84a2f6fd141 15.12.2013 02:23 # +7
roman-kashitsyn 15.12.2013 10:59 # +6
Квадратные скобочки нужны для контроля передачи свободных переменных в замыкание - по ссылке или по значению.
[&] - передавать всё по ссылке
[=] или просто [] - передавать всё по значению
Можно контролировать передачу на уровне отдельных переменных. Не забывай, GC тут нет, без контроля передачи свободных переменных лямбды были бы бесполезны.
Не хватает только захвата по rvalue reference с передачей владения.
bormand 15.12.2013 11:44 # +5
Неправда :) Пустые скобки вообще ничего не захватывает.
roman-kashitsyn 15.12.2013 11:53 # +3
LispGovno 15.12.2013 12:20 # +4
LispGovno 15.12.2013 16:39 # −2
bormand 15.12.2013 16:48 # +4
WTF?! Какой еще this лямбды?
[this](){ ... } вроде бы работало, [=](){...} тоже.
LispGovno 15.12.2013 16:50 # −2
LispGovno 16.12.2013 00:13 # −3
Stertor 15.12.2013 13:55 # +3
bormand 15.12.2013 14:50 # +4
anonimb84a2f6fd141 16.12.2013 02:53 # +2
bormand 16.12.2013 07:01 # +2
roman-kashitsyn 16.12.2013 07:46 # +5
anonimb84a2f6fd141 16.12.2013 09:06 # −2