| Perl Konteksty Grep i Map |
|---|
| przez wrares (226 odsłon) |
|
Perl Konteksty Grep i Map Lista jest jedną z najpopularniejszych metod gromadzenia danych. Operatory, które pomagają przetwarzać listy, są powszechnie znane i używane. Przykładem może być tutaj print . Jeszcze innym operatorem jest sort. My natomiast zajmie się dwoma innymi, a mianowicie grep oraz map. Grep pobiera elementy, umieszcza je w zmiennej $_ oraz sprawdza warunek testowy w kontekście skalarnym. Map robi to samo ale umieszcza wyrażenie w kontekście listowym. Na przykładzie postaramy się przedstawić różnice pomiędzy tymi operatorami i ich kontekstami. Założenie dla obu jest takie samo. Załóżmy że mamy miesiąc liczący 31 dni. Załóżmy że niedziele są dniami kończącymi się cyfrą 4 np. 4, 14, 24. Zadanie jest takie Z całego zbioru wyciągniemy tylko niedziele. Wydrukujemy które to są dni oraz ile ich jest . Zobaczymy jak zachowają się wspomniane operatory. Najpierw ogólne deklaracje Zaznaczyłem wyniki komentarzem #(1) aby było łatwiej zidentyfikować przypadek. Wydruk (1) generuje Cytat:
Wydruk (2) i (4) generują ten sam zestaw Cytat:
i dochodzimy do wydruków (3) i (5) . I mamy tutaj różnicę Wydruk (3) drukuje Cytat:
natomiast wydruk (5) drukuje Cytat:
Jak pokazano na powyższym przykładzie, brak zasadniczych różnic pomiędzy operatorami map a grep. Sposób zapisu kodu programu oraz dane na których operują są takie same, natomiast uzyskiwane wyniki są różne w zależności od kontekstu. Prawdę powiedziawszy wykorzystując operator map w kontekście skalarnym nie dowiedzielibyśmy się ile jest niedziel. Oczywiście można dołożyć kilka instrukcji i wykorzystując funkcję map otrzymamy rzeczywistą ich ilości, ale czy tędy droga. |
| Powrót |




