Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lambda [2008/04/16 22:45] przemo86 |
lambda [2008/04/16 23:27] przemo86 |
||
---|---|---|---|
Linia 134: | Linia 134: | ||
</code> | </code> | ||
+ | |||
Linia 170: | Linia 171: | ||
_1, | _1, | ||
case_statement<0> | case_statement<0> | ||
- | (var(std::cout) << constant("Wybrales 0 \n")), | + | (std::cout << constant("Wybrales 0 \n")), |
case_statement<1> | case_statement<1> | ||
- | (var(std::cout) << constant("Wybrales 1 \n")), | + | (std::cout << constant("Wybrales 1 \n")), |
default_statement | default_statement | ||
- | (var(std::cout) << constant("Nie mam pojecia co wybrales!\n"))) | + | (std::cout << constant("Nie mam pojecia co wybrales!\n"))) |
) ((make_const(666))); | ) ((make_const(666))); | ||
</code> | </code> | ||
+ | |||
+ | Użycie (make_const(666)) jest konieczne. Szablon tej funkcji jest następujący i jest zdefiniowany w bibliotece boost: | ||
+ | <code cpp> | ||
+ | template <class T> inline const T& make_const(const T& t) { return t; } | ||
+ | </code> | ||
+ | Przekazanie samego 666 mogłoby sprowokować błąd ponieważ 666 jest typu int i nie może mieć kwalifikatora const. Szablon natomiast potrzebuje const &. | ||
=== Petla while === | === Petla while === | ||
Linia 231: | Linia 238: | ||
)(make_const (4)); | )(make_const (4)); | ||
</code> | </code> | ||
+ | |||
+ | Ponieważ powyższe wyrażenie jest wyrażeniem lambda więc aby ono zrozumiało zmienne zewnętrzne należy je stworzyć jego elementem. Taką konwersje tworzy funkcja var(). | ||
Linia 272: | Linia 281: | ||
</code> | </code> | ||
- | ===== Plik z przykładami ===== | + | ===== Zakończenie i plik z przykładami ===== |
+ | Wyrażenia lambda to przydatne konstrukcje które nie raz mogą zaoszczędzić czas, zmniejszyć ilość kodu czy zajętą przez program pamięć. Mankamentem jest składnia wyrażeń której należy się po prostu nauczyć i przećwiczyć na wielu przykładach. | ||
Powyższe przykłady można wypróbować pobierając plik: | Powyższe przykłady można wypróbować pobierając plik: | ||
- | {{lambda.cpp|}} | + | {{boost_lambda.cpp|}} |