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+8

Intresserad av fler artiklar?

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

Senaste sökningarna

bag har fått 1321 sökningar. Den senaste gjordes 2021-08-05 23:13:42.

gladman har fått 1325 sökningar. Den senaste gjordes 2021-08-05 23:12:18.

nirvana har fått 1288 sökningar. Den senaste gjordes 2021-08-05 23:11:31.

politik har fått 1677 sökningar. Den senaste gjordes 2021-08-05 23:09:51.

ET har fått 1366 sökningar. Den senaste gjordes 2021-08-05 23:03:52.

BEF har fått 1176 sökningar. Den senaste gjordes 2021-08-05 23:01:29.

kart har fått 1618 sökningar. Den senaste gjordes 2021-08-05 23:00:26.

leporello har fått 1112 sökningar. Den senaste gjordes 2021-08-05 23:00:01.

lundkvist har fått 1020 sökningar. Den senaste gjordes 2021-08-05 22:59:10.

amerigo har fått 1231 sökningar. Den senaste gjordes 2021-08-05 22:58:46.

konst har fått 1395 sökningar. Den senaste gjordes 2021-08-05 22:57:30.

relativitetsteorin har fått 990 sökningar. Den senaste gjordes 2021-08-05 22:56:33.

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