Dopasowanie do wzorca
Dopasowanie do wzorca to technika programistyczna, która polega na porównaniu wyrażenia z określonym wzorcem, w którym mogą występować „wolne miejsca”. W wyniku dopasowania uzyskuje się listę wyrażeń, które pasują do tych miejsc. Najpopularniejsze systemy dopasowywania to wyrażenia regularne oraz wzorce symboliczne.
Wyrażenia regularne
Wyrażenia regularne są szeroko stosowane w wielu nowoczesnych językach programowania, takich jak Perl, Ruby, PHP czy Python. Przykład użycia w Perlu:
if ($numer_ip =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) { # pasuje do wzorca, wartości w $1, $2, $3, $4 } else { # nie pasuje do wzorca }
Dzięki wyrażeniom regularnym można wyrażać złożone wzorce w bardziej zwięzły sposób, co jest znacznie prostsze niż w C, gdzie konieczne byłoby użycie zewnętrznych bibliotek.
Wzorce symboliczne
W językach funkcyjnych powszechnie stosuje się wzorce symboliczne, które umożliwiają dopasowanie termów z zmiennymi. Użycie symbolu uniwersalnego, często reprezentowanego przez podkreślnik, pozwala na dopasowanie do każdego obiektu. Przykład w OCamlu:
match liczba with 0 -> "zero" | 1 -> "jeden" | 2 -> "dwa" | _ -> "inna liczba"
Alternatywnie, można to zrealizować za pomocą instrukcji warunkowej, jednak jest to mniej czytelne.
Inny przykład ilustruje zastosowanie wzorców do przetwarzania list:
match zmienna with [] -> "Lista jest pusta" | x::[] -> "Lista ma jeden element: " ^ x | x::y::[] -> "Lista ma dwa elementy: " ^ x ^ " i " ^ y | x::y::z::[] -> "Lista ma trzy elementy: " ^ x ^ ", " ^ y ^" i " ^ z | x::y::z::_ -> "Lista ma więcej niż trzy elementy: " ^ x ^ ", " ^ y ^", " ^ z ^ "..."
Wzorce symboliczne umożliwiają także przekształcanie symboli w inne wyrażenia, co dodatkowo zwiększa ich użyteczność w programowaniu.
W skrócie, zarówno wyrażenia regularne, jak i wzorce symboliczne, oferują potężne narzędzia do efektywnego przetwarzania danych w różnych językach programowania.