Encaixar patrons
En Tecnologies de la informació, encaixar patrons (en anglès:pattern matching) és l'operació de comprovar si una dada pot ser descomposada a partir de les operacions especificades en una expressió patró, obtenint-ne els components constitutius i assignant-los a les variables especificades al patró, cas de patrons d'expressions algebraiques o obtingudes com a resultat en cas d'expressions regulars en forma de llista de seccions delimitades per parèntesis.
Patrons algebraics [modifica]
S'utilitzen molt en llenguatges de programació funcional.
Per exemple, si tenim una dada cadena 'abc' i el patró és x.'c' (x seguit de 'c') la comprovació tindrà èxit i s'assignarà a la variable x el valor 'ab'.
Normalment se sol especificar una llista de patrons possibles i les accions a prendre en cada cas.
Cas de llistes i llenguatge Haskell:
[] identifica la llista buida
(x:xs) expressa la composició a partir d'un element i una altra llista
La descomposició per comprovació de patrons es pot completar amb guardes per especificar accions a fer en subdominis de valors.
(x:xs) | x<5 ... | altrament ...
En llenguatge Scala podem afegir comprovació de tipus en els patrons
x:String ... x:Int ...
Els valors individuals també poden ser especificats com a patrons
0 ... 1 ... n ...
Expressions regulars [modifica]
Els patrons d'expressions regulars permeten descomposar un text i seleccionar subseqüències marcades entre parèntesi, obtenint com a resultat la llista de frases dites grups corresponents a les zones delimitades, que poden aplicar-se posteriorment a una substitució afegint un patró de substitució amb \1 \n o $1 $n marcant els llocs on incloure els grups obtinguts.
Hi ha llenguatges que incorporen aquests patrons amb tipus propis com ara Javascript
rexp = /a(b?c*)d(e?[a-c]{1,5}g)h/ ;
x = tira.replace(rexp, "..$1..$2..") ;
i els que no ho fan els construeixen a partir de cadenes de text i proporcionen biblioteques de rutines específiques per a aquest propòsit.
rexp = "a(b?c*)d(e?[a-c]{1,5}g)h" ;
| Açò és un esborrany sobre programari. Amplieu-lo! (citant les fonts) |