Biztonság (programozás)

A védelem ( őrkifejezés , őrkifejezés ) egy logikai kifejezés , amelynek célja a számítási folyamatok korlátozása és a számítási opció kiválasztása. Általában funkcionális programozási nyelvekben használják (pl . Haskell , Erlang ) [1] .

Guard kifejezési példák

Minden ezt követő őrkifejezés a Haskell funkcionális nyelven van , amely nagyon gyakran használja ezt a technológiát. Minden ilyen kifejezés félkövérrel van kiemelve a kódokban .

1. példa – Listafelvétel

A függvény az adott szám osztóinakdivisors listáját adja vissza . A definíció második sora egy őrt mutat, amely az osztók listájának egy elemének kiválasztását csak olyan értékre korlátozza, amely az eredeti paramétert maradék nélkül osztja. nxn

osztók n = [x | x <- [1..(n - 1)], n `mod` x == 0 ]

2. példa – Védőelem a függvénytörzsben

A függvény signa megadott szám előjelét adja vissza x. Az őr kifejezéseket a szimbólumok ( ) mögé írjuk |. Lehetővé teszik egy vagy másik alternatíva kiválasztását egy szám előjelének kiszámításakor. Ezt a tárolási módot gyakran használják a mintaillesztési mechanizmus helyett, amikor a függvényben nincs mód a minta kifejezett leírására (például ha a függvény egy általános alkalmazásfüggvény valamilyen típusú , például példány értékeinek feldolgozására valamelyik osztályból).

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

Az őrzés lehetővé teszi, hogy érvénytelen egyező kifejezés esetén továbblépjünk a következőre. Ha az előző példa mintaillesztési operátorként van formázva, akkor az x = 0első egyezés ( x < 0) hibát okoz, amelynek kezelője leállítja a további egyeztetési kísérleteket. Ezenkívül abban az esetben, ha nem minden kifejezés igaz, célszerű az ilyen helyzeteket az azonnali igazságérték beállításával megragadni True. Az olvashatóság érdekében a Prelude standard könyvtára biztosítja az egyébként állandót, ami még inkább kapcsolónak tűnik az algoritmikus nyelvekben.

Lásd még

Jegyzetek

  1. Cesarini, Thompson, 2012 .

Irodalom