Start Logga In Skriv Artikel Om Oss
Vad söker du?
Allt om 'Mönstermatchning'

Mönstermatchning

Mönstermatchning(pattern matching på engelska) är en syntax-metod inom programmering föratt låta en funktion uppföra sig på ett speciellt vis genom att jämföra ett antal funktionsdefinitioner mot hur 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 summera heltal i en lista se ut så här:

fun summeraHeltal( [] ) = 0 | summeraHeltal( d::r ) = d + summeraHeltal( r );

Den tar en lista (t.ex. [1,2,3]) som argument. Beroende på hur argumentet ser ut så väljer programmet attta den ena eller andra definitionen på funktionen. [] betecknar en tom lista. d::r betyder att man ska sed som ett tal 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 del och r för rest)

summeraHeltal( [1,2,3] ) = 1 + summeraHeltal([2,3]

I det här fallet så upprepas matchingen och listan matchas som2::[3] vilket ger

summeraHeltal( [1,2,3] ) = 1 + 2 + summeraHeltal([3])

Nu så finns det bara ett element kvar i listan (3) och 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 stega rekursionenbaklänges och utföra additionen.

summeraHeltal( [1,2,3] ) = 6

Redigera?

Artikeln skriven 2009-01-17 av Learning4sharing

Inga kategorier för denna artikel än...

Vi behhöver hjälp att kategorisera våra artiklar. Kan du skriva ett nyckelord för denna artikel? Du kan skriva upp till 3 olika nyckelord för denna artikel, vi uppskattar din hjälp!

Skriv nyckelord som du tycker beskriver denna artikel på ett bra sätt. Du kan ange 3 olika nyckelord för denna artikel, max 20 tecken per nyckelord.

  1. Lägg till fler
    Skriv in svaret på frågan: 7+10

Intresserad av fler artiklar?

Jupiter Ace
Spagettikod
COMAL
DarkBASIC Classic
DarkBASIC Professional
Grafisk miniräknare
Peek
Poke
Mnemonic

Senaste sökningarna

imperfekt har fått 1279 sökningar. Den senaste gjordes 2024-07-18 14:03:07.

logos har fått 1293 sökningar. Den senaste gjordes 2024-07-18 14:03:01.

crust har fått 1459 sökningar. Den senaste gjordes 2024-07-18 14:01:17.

Liberalism har fått 1676 sökningar. Den senaste gjordes 2024-07-18 14:01:08.

erotik har fått 2049 sökningar. Den senaste gjordes 2024-07-18 14:00:57.

sparv har fått 1179 sökningar. Den senaste gjordes 2024-07-18 14:00:07.

osteosarkom har fått 1601 sökningar. Den senaste gjordes 2024-07-18 13:54:48.

husgud har fått 1349 sökningar. Den senaste gjordes 2024-07-18 13:54:29.

skuru har fått 1366 sökningar. Den senaste gjordes 2024-07-18 13:52:02.

anestesi har fått 1288 sökningar. Den senaste gjordes 2024-07-18 13:51:45.

drasut har fått 1537 sökningar. Den senaste gjordes 2024-07-18 13:50:35.

miljonprogrammet har fått 1197 sökningar. Den senaste gjordes 2024-07-18 13:49:19.

Designed by: template world
Learning4sharing.nu
All Rights Reserved. 0.08 SEK

Logga in

Välkommen att redigera och skriva nya artiklar!

Ingent Konto?

Skaffa konto för att redigera och skapa nya ariklar Nytt Konto.

Ny Användare

Välkommen att redigera och skriva nya artiklar! Skapa konto nedan.


Ett verifieringsmail kommer att skickas till din E-post som du måste öppna och verifiera din E-post med

Lägg till artikel

Du är inte inloggad.

Logga In eller Skapa konto.