Säkerhet (programmering)

Skydd ( guard expression , guard expression ) är ett logiskt uttryck som är avsett att begränsa beräkningsprocesser och välja ett beräkningsalternativ. Används vanligtvis i funktionella programmeringsspråk (t.ex. Haskell , Erlang ) [1] .

Guard-uttrycksexempel

Alla efterföljande skyddsuttryck är på funktionsspråk Haskell , som använder denna teknik väldigt ofta. Alla sådana uttryck är markerade med fet stil i koderna .

Exempel 1 - Listinkludering

Funktionen divisors returnerar en lista med divisorer för det givna talet n. Den andra raden i definitionen visar ett skydd som begränsar valet av ett element i listan över divisorer xtill endast ett sådant värde som delar den ursprungliga parametern nutan en rest.

divisorer n = [x | x <- [1..(n - 1)], n "mod" x == 0 ]

Exempel 2 - Vakt i funktionskropp

Funktionen signreturnerar tecknet för det givna talet x. Skyddsuttryck skrivs efter symboler ( |). De låter dig välja ett eller annat alternativ när du beräknar tecknet för ett tal. Detta sätt att lagra används ofta istället för mönstermatchningsmekanismen när det inte finns något sätt att uttryckligen beskriva mönstret i funktionen (till exempel om funktionen är en generisk applikationsfunktion för att bearbeta värden av någon typ som är en instans av någon klass).

tecken x | x < 0 = -1 | x == 0 = 0 | x > 0 = 1

Bevakning tillåter, i händelse av ett ogiltigt matchande uttryck, att gå vidare till nästa. Om föregående exempel är formaterat som en mönstermatchningsoperator, kommer den x = 0första matchningen ( x < 0) att orsaka ett fel, vars hanterare kommer att stoppa ytterligare försök att matcha. Dessutom, för de fall då alla uttryck inte är sanna, är det bekvämt att fånga sådana situationer genom att ställa in det omedelbara sanningsvärdet True. För läsbarheten tillhandahåller Prelude-standardbiblioteket den annars konstanta, som ser ännu mer ut som en switch i algoritmiska språk.

Se även

Anteckningar

  1. Cesarini, Thompson, 2012 .

Litteratur