Предикатная отправка - Predicate dispatch

В компьютерное программирование, предикатная отправка является обобщением множественная отправка ("мультиметоды"), что позволяет метод для вызова быть выбранным во время выполнения на основе произвольно разрешимой логические предикаты и / или сопоставление с образцом прикреплен к объявлению метода.[1][2]

Раку поддерживает отправку предикатов с использованием предложений where, которые могут выполнять произвольный код для любой функции или параметра метода.[3]

Юля есть пакет для этого с PatternDispatch.jl но в остальном изначально поддерживает множественную отправку.

Созданы экспериментальные реализации для Общий LISP,[4][5] и для Ява (JPred[2]).

Он позволяет открытое расширение ранее объявленных методов на мелкомасштабном уровне, но несколько расширений с идентичными или перекрывающимися предикатами, созданными разными разработчиками, могут мешать друг другу непредвиденным образом. В этом отношении он похож на аспектно-ориентированное программирование.

Рекомендации

  1. ^ Миллштейн, Т. «Практическая отправка предикатов» (PDF). Цитировать журнал требует | журнал = (помощь)
  2. ^ а б Millstein, T .; Frost, C .; Ryder, J .; Варт, А. (2009). «Выразительная и модульная отправка предикатов для Java». Транзакции ACM по языкам и системам программирования. 31 (2): 1. CiteSeerX  10.1.1.212.4268. Дои:10.1145/1462166.1462168.
  3. ^ "подпись класса". Получено 2020-07-07.
  4. ^ "Диспетчеризация предикатов в объектной системе Common Lisp" (PDF).
  5. ^ "pcostanza / отфильтрованные функции". GitHub. Получено 2016-04-07.

внешняя ссылка