Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

лямда в c11 польза или извращение?

404  1 2 все
Simple Nothing is f*cked18.12.17 14:14
Simple
NEW 18.12.17 14:14 
в ответ anly 15.12.17 18:58

В принципе, так и есть.

Вот пример из моего актуального кода с лямбдой: https://pastebin.com/5JpSD8mH

А вот то же без лябмды: https://pastebin.com/cEGCehYS

#21 
anly коренной житель18.12.17 18:46
anly
NEW 18.12.17 18:46 
в ответ Simple 18.12.17 14:14

НП.

лямды отлично подходят вместо макросов.

допустим такой макрос из древнего С:

#define FUN(X) a*(X)*(X) + b*(X) + c

где a,b,c - локальные переменные функции, а X параметр макроса.

С лямдой можно сделать:

auto FUN = [a,b,c](float X) -> float{ return a*X*X + b*X + c;}

Вызовы будут совершенно однинаковые, типа y = FUN(7.7);

Но преимущесвто у лямды:

- можно по шагам ходить в дебагере (есть смысл если лямда больше одной строчки).

- X вычисляется один раз (если это выражение)

- компилятор лучше покажет место ошибки, если она есть


(кому лень, может вместо [a,b,c] написать[=])

Проклят нарушающий межи ближнего своего (Втор.27:17)
#22 
1 2 все