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: 10+6

Intresserad av fler artiklar?

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

Senaste sökningarna

konstbevattning har fått 1775 sökningar. Den senaste gjordes 2024-06-21 19:35:52.

lea har fått 1538 sökningar. Den senaste gjordes 2024-06-21 19:35:06.

dragspel har fått 1984 sökningar. Den senaste gjordes 2024-06-21 19:33:23.

ffar har fått 1487 sökningar. Den senaste gjordes 2024-06-21 19:33:02.

bebis har fått 1207 sökningar. Den senaste gjordes 2024-06-21 19:32:03.

instickskort har fått 1429 sökningar. Den senaste gjordes 2024-06-21 19:30:33.

babylon har fått 1928 sökningar. Den senaste gjordes 2024-06-21 19:28:45.

kjell alinge har fått 1290 sökningar. Den senaste gjordes 2024-06-21 19:28:11.

arvidsson har fått 1420 sökningar. Den senaste gjordes 2024-06-21 19:28:08.

Oidipuskomplex har fått 2220 sökningar. Den senaste gjordes 2024-06-21 19:25:40.

amerigo vespucci har fått 2265 sökningar. Den senaste gjordes 2024-06-21 19:24:35.

Rousseau har fått 1648 sökningar. Den senaste gjordes 2024-06-21 19:18:49.

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