Как определить индивидуальное поведение в Erlang и что оно может сделать для вас? - PullRequest
2 голосов
/ 27 июня 2011

когда я начал смотреть на OTP, в основном есть три поведения, gen_server, FSM, событие, но есть пример приложения inets, я увидел, что оно определило настроенное поведение -behavior (inets_service).Так как же пользователь может определить настроенное поведение и для чего оно вам нужно?

Ответы [ 2 ]

4 голосов
/ 29 июня 2011

Пользовательское поведение позволяет вам указать контракт.Этот контракт задается списком имен функций / арностей, которые должны существовать в модуле, реализующем это поведение.По сути, просто удобно убедиться, что вы объявили все функции.

В качестве примера вы можете определить модуль с поведением gen_server, а затем опустить функцию handle_info/2 из него.Затем проверка поведения выдаст ошибку, потому что вам не хватает части контракта.

Вот и все!Для их реализации в модуле, определяющем поведение, определена специальная функция behavior_info/1, которая сообщает системе Erlang о поведении.

inets определяет поведение inets_service, поскольку оно затем служит контрактом длясоединения с системой inets.

0 голосов
/ 04 декабря 2013

демоверсия ковбоя

-module(cowboy_middleware).

-type env() :: [{atom(), any()}].
-export_type([env/0]).

-callback execute(Req, Env)
    -> {ok, Req, Env}
    | {suspend, module(), atom(), [any()]}
    | {halt, Req}
    | {error, cowboy:http_status(), Req}
    when Req::cowboy_req:req(), Env::env().

Эрланг использовал -callback пользовательское поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...