Описание крючка в Apache documentation является:
В общем, функция крючок один, что Apache будет вызывать в какой-то момент во время обработки запроса. Модули могут предоставлять функции, которые вызывают, и указывать, когда они вызываются по сравнению с другими модулями.
Более общим термином будет функция обратного вызова; такие языки, как C#, имеют специальные объекты обратного вызова Делегаты, потому что они не рассматривают функции как (хорошие) граждане первого класса на своем языке. В функциональных языках, таких как OCaml, функции ничем не отличаются от других значений, поэтому вы можете передавать их так же, как любое целочисленное значение, не требуя указателей или тому подобного. Это делает запись функций обратного вызова на этих языках настолько естественной, что их программистам даже не нужно причудливое имя для этого. ;)
На самом деле стандартная библиотека OCaml имеет множество функций более высокого порядка, которые принимают другие функции в качестве аргументов. Ниже приведен пример:
List.iter print_endline ["higher"; "order"; "function"]
List.iter
функция принимает функцию print_endline
, как «обратного вызова» аргумент и применяет его к каждому элементу 2-го аргумента (список строк). Поскольку OCaml позволяет функциям иметь побочные эффекты, вы можете даже снабдить funciton до List.iter
, который изменяет некоторые ссылки в другом месте вашей программы.
Кажется, что «крючок» здесь может иметь множество различных потенциальных определений. – aneccodeal