En programación informática , el envío de predicados es una generalización del envío múltiple ("multimétodos") que permite seleccionar el método a llamar en tiempo de ejecución en función de predicados lógicos decidibles arbitrarios y/o coincidencia de patrones adjunta a una declaración de método. [1] [2]
Raku admite el envío de predicados mediante cláusulas "where" que pueden ejecutar código arbitrario contra cualquier parámetro de función o método. [3]
Julia tiene un paquete para ello con PatternDispatch.jl pero por lo demás admite de forma nativa envíos múltiples.
Se han creado implementaciones experimentales para Common LISP , [4] [5] y para Java (JPred [2] ).
Permite la extensión abierta de métodos previamente declarados a un nivel de granularidad fina, pero múltiples extensiones con predicados idénticos o superpuestos creadas por diferentes desarrolladores pueden interferir entre sí de maneras imprevistas. En este sentido, es similar a la programación orientada a aspectos .
Referencias
- ^ Millstein, T. Despacho práctico de predicados (PDF) . OOPSLA '05.
- ^ ab Millstein, T.; Frost, C.; Ryder, J.; Warth, A. (2009). "Despacho de predicados expresivos y modulares para Java". ACM Transactions on Programming Languages and Systems . 31 (2): 1. CiteSeerX 10.1.1.212.4268 . doi :10.1145/1462166.1462168. S2CID 2150617.
- ^ "Firma de clase" . Consultado el 7 de julio de 2020 .
- ^ "Despacho de predicados en el sistema de objetos Common Lisp" (PDF) .
- ^ "pcostanza/filtered-functions". GitHub . Consultado el 7 de abril de 2016 .
Enlaces externos
- Wiki C2: Despacho de predicados