-
Data: 2011-10-16 15:26:11
Temat: Re: lambda i clojures
Od: bartekltg <b...@o...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2011-10-16 10:05, Piotr Chamera pisze:
> W dniu 2011-10-16 07:25, f...@g...SKASUJ-TO.pl pisze:
>> Piotr Chamera<p...@p...onet.pl> napisał(a):
>>> Closure to taka funkcja powiązana ze środowiskiem, w którym została
>>> zdefiniowana. N.p.:
>>>
>>> (let ((licznik 0))
>>> (defun następny () (setf licznik (1+ licznik))))
>>>
>>> CL-USER> (następny)
>>> 1
>>>
>>> CL-USER> licznik
>>> Unbound variable: LICZNIK
>>> [Condition of type UNBOUND-VARIABLE]
>>>
>>> CL-USER> (następny)
>>> 2
>>>
>>> W Wikipedii jest to całkiem dobrze opisane:
>>> http://en.wikipedia.org/wiki/Closure_%28computer_sci
ence%29
>
> Że ,,licznik" nie jest dostępny globalnie - po wyjściu z zasięgu
> konstrukcji ,,let" przestał być widoczny, ale po wywołaniu funkcji
> nadal jest dostępny - to fragment środowiska, w którym funkcja była
> definiowana, który został przez nią przechwycony. Nie może być
> odłożony na stosie, jest zewnętrzny w stosunku do ciała funkcji i może
> przenosić informację pomiędzy jej wywołaniami.
> Żeby to zrobić w C
> trzeba by pewnie zaalokować jakiś obiekt na stercie i przekazać
> do funkcji wskaźnik do niego.
Zmienne statyczne w funkcji?
http://en.wikipedia.org/wiki/Static_variable
#include <stdio.h>
void func() {
static int x = 0; // x is initialized only once across three
calls of func()
printf("%d\n", x); // outputs the value of x
x = x + 1;
}
int main(int argc, char * const argv[]) {
func(); // prints 0
func(); // prints 1
func(); // prints 2
return 0;
}
Robi dokładnie to, co Twój przykład.
pzdr
bartekltg
Następne wpisy z tego wątku
- 16.10.11 16:22 Piotr Chamera
- 16.10.11 16:43 Bronek Kozicki
- 16.10.11 16:44 Bronek Kozicki
- 16.10.11 17:11
- 16.10.11 17:56 Piotr Chamera
- 16.10.11 20:19 Bronek Kozicki
- 17.10.11 04:38 Maciej Pilichowski
- 17.10.11 05:17 p...@p...onet.pl
- 17.10.11 05:25 p...@p...onet.pl
- 17.10.11 06:32 Piotr Chamera
- 17.10.11 07:18 Stachu 'Dozzie' K.
- 17.10.11 07:20 Stachu 'Dozzie' K.
Najnowsze wątki z tej grupy
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
Najnowsze wątki
- 2025-04-30 Szczecin => Key Account Manager IT <=
- 2025-04-30 Chiny => Koordynator Produkcji / Przedstawiciel ds. rozwoju produktu <
- 2025-04-30 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-04-29 Nożownik zaatakował i zabił lekarza
- 2025-04-29 Polecam żarówki Blackout na Blackout z dużym gwintem
- 2025-04-29 Porażka kasty sędziowskiej przed Trybunałem Sprawiedliwości UE
- 2025-04-29 Kombinacja znaków A11 i B33?
- 2025-04-29 Na jakim etapie jest sprawa karna "gaśnicowego" Brauna z grudnia 2023?
- 2025-04-29 TSUE jest "przeciw a nawet za" neosędziami :-)
- 2025-04-29 Wrocław => Konsultant wdrożeniowy (systemy kontrolingowe) <=
- 2025-04-29 China => Production Coordinator / Representant Product Dev <=
- 2025-04-29 Warszawa => Specjalista rekrutacji IT <=
- 2025-04-28 Hiszpania bez pradu
- 2025-04-28 chinska stal
- 2025-04-28 QR kody