Stwierdzam że lambdy w Pythonie są jednak prostsze :D
@sylwke3100: lambdy w pythonie są zbyt proste, pozwalają na podanie tylko pojedynczego wyrażenia. Bloki w rubym to jest to (jak domknięcia w scali albo lispach).
@KrzaQ2: domknięcia są fajne, ale do pełni szczęścia jeszcze GC opcjonalne by się przydało. Niby są automatyczne wskaźniki, ale to nie do końca to samo (np jak są cykle to nie działa, jeśli dobrze rozumiem).
GC + domknięcia pozwalają na fajną enkapsulację:
function createFnsToRunLater() {
__var localDataThatShouldntBeVisible = ...; // dane z cyklami referencji w sobie
#cpp #programowanie #trivia
@sylwke3100
@KrzaQ2: to jest jako wskaźnik może?
Ale pythonowej lambdy nie przebije :D :
lam = lambda a: a * 2
lam(2)
@sylwke3100: lambdy w pythonie są zbyt proste, pozwalają na podanie tylko pojedynczego wyrażenia. Bloki w rubym to jest to (jak domknięcia w scali albo lispach).
GC + domknięcia pozwalają na fajną enkapsulację:
function createFnsToRunLater() {
__var localDataThatShouldntBeVisible = ...; // dane z cyklami referencji w sobie
__return [
____function () {
______doSthWith(localDataThatShouldntBeVisible);
____},
____function () {
______doSthDifferentWith(localDataThatShouldntBeVisible);
____}
__];
}
...
1) od tego jest
weak_ptr
, ƶeby takich problemów nie było.
2) c++ ma opcjonalny support dla GC, ale nigdy się tym nie interesowałem, bo dla mnie RAII w
unique_ptr
jest wystarczające
3) nie ma na razie w standardzie, ale napisanie własnej klasy typu
scope_guard
jest trywialne