Zabezpečení (programování)

Ochrana ( guard výraz , guard výraz ) je logický výraz , který má omezit výpočetní procesy a vybrat možnost výpočtu. Obvykle se používá ve funkcionálních programovacích jazycích (např . Haskell , Erlang ) [1] .

Příklady výrazů stráže

Všechny následné výrazy strážců jsou ve funkčním jazyce Haskell , který tuto technologii velmi často používá. Všechny takové výrazy jsou v kódech zvýrazněny tučně .

Příklad 1 - Zařazení do seznamu

Funkce divisors vrací seznam dělitelů daného čísla n. Druhý řádek definice ukazuje stráž, která omezuje výběr prvku seznamu dělitelů xpouze na takovou hodnotu, která nbeze zbytku dělí původní parametr.

dělitelé n = [x | x <- [1..(n - 1)], n `mod` x == 0 ]

Příklad 2 - Ochrana v těle funkce

Funkce signvrací znaménko daného čísla x. Strážní výrazy se píší za symboly ( |). Umožňují vám vybrat jednu nebo druhou alternativu při výpočtu znaménka čísla. Tento způsob ukládání se často používá místo mechanismu porovnávání vzorů , když neexistuje způsob, jak explicitně popsat vzor ve funkci (například pokud je funkce generickou aplikační funkcí pro zpracování hodnot nějakého typu , který je instancí nějaké třídy).

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

Hlídání umožňuje v případě neplatného shodného výrazu přejít na další. Pokud je předchozí příklad naformátován jako operátor shody vzoru, pak x = 0první shoda ( x < 0) způsobí chybu, jejíž obsluha zastaví další pokusy o shodu. Navíc pro případ, kdy všechny výrazy nejsou pravdivé, je vhodné takové situace zachytit nastavením okamžité pravdivostní hodnoty True. Pro čitelnost poskytuje standardní knihovna Prelude jinak konstantu, která vypadá ještě více jako přepínač v algoritmických jazycích.

Viz také

Poznámky

  1. Cesarini, Thompson, 2012 .

Literatura