В компьютерном программировании , предикат отправка является обобщением множественной диспетчеризации ( «мультиметодного») , что позволяет метод для вызова должны быть выбран во время выполнения на основе произвольных разрешимых логических предикатов и / или сопоставления с образцом , прикрепленных к объявлению метода. [1] [2]
Raku поддерживает отправку предикатов с использованием предложений «where», которые могут выполнять произвольный код для любой функции или параметра метода. [3]
У Джулии есть пакет для него с PatternDispatch.jl, но в остальном он изначально поддерживает множественную отправку.
Были созданы экспериментальные реализации для Common LISP , [4] [5] и для Java (JPred [2] ).
Он позволяет открытое расширение ранее объявленных методов на мелкомасштабном уровне, но несколько расширений с идентичными или перекрывающимися предикатами, созданными разными разработчиками, могут непредвиденным образом мешать друг другу. В этом отношении он похож на аспектно-ориентированное программирование .
Рекомендации
- ^ Millstein, T. "Практическая отправка предикатов" (PDF) . Неизвестный параметр
|conference=
игнорируется ( справка );Цитировать журнал требует|journal=
( помощь ) - ^ а б Millstein, T .; Frost, C .; Ryder, J .; Варт, А. (2009). «Выразительная и модульная отправка предикатов для Java». Транзакции ACM по языкам и системам программирования . 31 (2): 1. CiteSeerX 10.1.1.212.4268 . DOI : 10.1145 / 1462166.1462168 .
- ^ "подпись класса" . Проверено 7 июля 2020 .
- ^ «Диспетчеризация предикатов в объектной системе Common Lisp» (PDF) .
- ^ "pcostanza / отфильтрованные функции" . GitHub . Проверено 7 апреля 2016 .