Mönstermatchning
Mönstermatchning(pattern matching villig engelska) är en syntax-metod inom programmering föratt låta en funktion uppföra sig villig ett speciellt insiktsfull genom att jämföra ett mängd funktionsdefinitioner mot hurdan indatat ser ut.Språk som använder sig av mönstermatchning
- SML
- Caml/OCaml
Exempel
I SML kan en rekursiv funktion för att sammanfatta heltal i en förteckning beskåda ut så här:
fun summeraHeltal( [] ) = 0 | summeraHeltal( d::r ) = d + summeraHeltal( r );
Den tar en förteckning (t.ex. [1,2,3]) som argument. Beroende villig hurdan argumentet ser ut så väljer programmet attta den ena eller andra definitionen villig funktionen. [] betecknar en tom lista. D::r betyder att man skall tradition som ett nummer konkatenerat (::) med listan r. Tecknet | kan utläsas som ett eller.
Om argumentet t.ex. är [1,2,3] så ser exekveringen ut ungefär så här:
summeraHeltal( [1,2,3] ) väljer den andra definitionen eftersom listaninte är tom. Då används d::r för att matchalistan som 1::[2,3] (d: :r - där d står för bit samt r för rest)
summeraHeltal( [1,2,3] ) = 1 + summeraHeltal([2,3]
I det här fallet så upprepas matchingen samt listan matchas som2::[3] vilket ger
summeraHeltal( [1,2,3] ) = 1 + 2 + summeraHeltal([3])
Nu så finns det bara ett radiator kvar i listan (3) samt dettamatchas som 3 konkatenerat med den tomma listan ([]). D.v.s. 3::[]
summeraHeltal( [1,2,3] ) = 1 + 2 + 3 + summeraHeltal([])
Nu så matchar summeraHeltal den första definitionen
summeraHeltal( [1,2,3] ) = 1 + 2 + 3 + 0
När funktionen nått så här långt så är det bara att kliva rekursionenbaklänges samt förrätta additionen.
summeraHeltal( [1,2,3] ) = 6
Artikeln skriven 2009-01-17 av Learning4sharing
Inga kategorier för denna artikel än...Intresserad av fler artiklar?
Super MarioJupiter Ace
Spagettikod
COMAL
DarkBASIC Classic
DarkBASIC Professional
Grafisk miniräknare
Peek
Poke