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: 0+2

Intresserad av fler artiklar?

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

Senaste sökningarna

ärg har fått 1387 sökningar. Den senaste gjordes 2025-02-09 06:09:12.

turk har fått 1773 sökningar. Den senaste gjordes 2025-02-09 06:06:06.

monostabil har fått 1179 sökningar. Den senaste gjordes 2025-02-09 06:05:46.

molekyler har fått 1870 sökningar. Den senaste gjordes 2025-02-09 06:05:04.

vars har fått 1589 sökningar. Den senaste gjordes 2025-02-09 06:03:45.

rwanda har fått 1543 sökningar. Den senaste gjordes 2025-02-09 06:02:36.

ukm har fått 1534 sökningar. Den senaste gjordes 2025-02-09 05:58:45.

censur har fått 1706 sökningar. Den senaste gjordes 2025-02-09 05:58:11.

rb90 har fått 1377 sökningar. Den senaste gjordes 2025-02-09 05:58:08.

telia bredband har fått 1228 sökningar. Den senaste gjordes 2025-02-09 05:58:01.

hundrakronorssedel har fått 1475 sökningar. Den senaste gjordes 2025-02-09 05:56:14.

forum har fått 1583 sökningar. Den senaste gjordes 2025-02-09 05:56:12.

Designed by: template world
Learning4sharing.nu
All Rights Reserved. 0.17 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.