-
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
- 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
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-31 kupujmy części
- 2025-01-30 pogromca ksiezy
- 2025-01-30 Warszawa => Data Engineer (Tech Lead) <=
- 2025-01-30 Czy WYNIESIENIE UE-posła Brauna z sali obrad UE-parlamentu stanowiło naruszenie jego immunitetu i godności?
- 2025-01-30 drukarka potrzebna
- 2025-01-30 Warszawa => QA Engineer (Quality Assurance) <=
- 2025-01-30 Łódź => Programista NodeJS <=
- 2025-01-30 Jest Trump prezydent jest Meta/FBook/Instagram ugoda za 25 mln. USD
- 2025-01-30 Gdańsk => Solution Architect (Java background) <=
- 2025-01-30 Zielona Góra => Senior Field Sales (system ERP) <=
- 2025-01-30 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2025-01-30 DeepSeek nie lubi gadać o polityce
- 2025-01-30 Błonie => Administrator systemów <=
- 2025-01-30 Gliwice => Business Development Manager - Network and Network Security
- 2025-01-30 Warszawa => Programista Full Stack (.Net Core) <=