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

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

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

Intresserad av fler artiklar?

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

Senaste sökningarna

bondestenåldern har fått 620 sökningar. Den senaste gjordes 2012-05-26 00:40:04.

instickskort har fått 230 sökningar. Den senaste gjordes 2012-05-26 00:38:15.

praxis har fått 165 sökningar. Den senaste gjordes 2012-05-26 00:36:54.

giddens har fått 201 sökningar. Den senaste gjordes 2012-05-26 00:33:15.

rave har fått 279 sökningar. Den senaste gjordes 2012-05-26 00:29:43.

planflykt har fått 125 sökningar. Den senaste gjordes 2012-05-26 00:29:36.

herpes har fått 319 sökningar. Den senaste gjordes 2012-05-26 00:29:32.

fotosyntes har fått 238 sökningar. Den senaste gjordes 2012-05-26 00:29:21.

ean har fått 217 sökningar. Den senaste gjordes 2012-05-26 00:29:17.

aluminium har fått 423 sökningar. Den senaste gjordes 2012-05-26 00:29:12.

PT har fått 353 sökningar. Den senaste gjordes 2012-05-26 00:29:02.

slidder har fått 289 sökningar. Den senaste gjordes 2012-05-26 00:27:51.

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