Start  |  Gry  |  Słowniki *  
 : : Menu
Dla początkujących
Dla praktyków
Język
Wersje
Książki
Smalltalk vs. Java
Wiadomości
Linki
FAQ
Pobierz
Co nowego?
Mapa serwisu
Kontakt
Impressum
Księga gości
Po godzinach
Nakarm głodne dziecko - wejdź na stronę www.Pajacyk.pl
 

Założenie, że wysłanie do pustego bloku metody value zwraca nil.

Pusty blok w większości popularnych implementacji Smalltalka zwraca nil po wysłaniu do niego metody value, tzn.

[] value - wynikiem wykonania tego kodu będzie nil.

Dlatego też spotyka się nieraz następujące konstrukcje:

value := myCollection detect: [:each | each = myObject ] ifNone: [].

oraz

value := someBoolean ifTrue: ['some object'] ifFalse: [].

W przypadku nieznalezienia żądanego objektu w pierwszym przykładzie lub gdy zmienna someBoolean ma wartość false w drugim przykładzie, wtedy zmiennej value przypisana zostanie wartość nil.

Zwracanie nil przez pusty blok po wysłaniu do niego metody value nie jest jednak regułą. Projekt standardu ANSI przewiduje w tym wypadku zwrócenie nieokreślonej wartości, tzn. wartość ta nie musi być wcale nil.
Dlatego, aby uniezależnić się od aktualnej implementacji bloku i zapewnić pełną przenośność kodu lepiej jest pisać:

value := myCollection detect: [:each | each = myObject ] ifNone: [nil].

oraz

value := someBoolean ifTrue: ['some object'] ifFalse: [nil].

Z drugiej jednak strony obecnie popularne środowiska Smalltalk zwracają w takim przypadku nil, tak więc użycie drugiego sposobu zapisu nie jest w większości zastosowań konieczne dla zachowania przenośności kodu.


(pn)



SelfSmaltalk, (c) ObjectSpace.Net
Strona wygenerowana przy pomocy edytora aceHTML
i systemu VisualWorks Smalltalk NC 7.0