Отправка предиката
Полиморфизм |
---|
Специальный полиморфизм |
Параметрический полиморфизм |
Подтипирование |
В компьютерном программировании диспетчеризация предикатов — это обобщение множественной диспетчеризации («мультиметодов»), которое позволяет метод выбирать вызываемый во время выполнения на основе произвольных разрешимых логических предикатов и/или сопоставления шаблонов, прикрепленных к объявлению метода. [1] [2]
Raku поддерживает диспетчеризацию предикатов с использованием предложений «where», которые могут выполнять произвольный код для любого параметра функции или метода. [3]
У Джулии есть пакет для этого с PatternDispatch.jl , но в остальном она изначально поддерживает множественную отправку.
созданы экспериментальные реализации Для Common LISP , [4] [5] и для Java (JPred [2] ).
Он позволяет открыто расширять ранее объявленные методы на детальном уровне, но несколько расширений с одинаковыми или перекрывающимися предикатами, созданными разными разработчиками, могут непредвиденным образом мешать друг другу. В этом отношении оно похоже на аспектно-ориентированное программирование .
Ссылки [ править ]
- ^ Мильштейн, Т. Практическая отправка предикатов (PDF) . УПСЛА '05.
- ^ Jump up to: Перейти обратно: а б Миллштейн, Т.; Фрост, К.; Райдер, Дж.; Варт, А. (2009). «Выразительная и модульная диспетчеризация предикатов для Java». Транзакции ACM в языках и системах программирования . 31 (2): 1. CiteSeerX 10.1.1.212.4268 . дои : 10.1145/1462166.1462168 . S2CID 2150617 .
- ^ «Подпись класса» . Проверено 7 июля 2020 г.
- ^ «Диспетчеризация предикатов в объектной системе Common Lisp» (PDF) .
- ^ "pcostanza/filtered-functions" . Гитхаб . Проверено 7 апреля 2016 г.