Mar. 24th, 2017

Erlang wat

Mar. 24th, 2017 12:02 pm
jamhed: (Default)
Посмотрел вот видео горячего аргентинского парня который пытался искромётно шутить про Erlang в стиле известного wat (и прямыми отсылками). Шутил он как и обещал плохо, и большая часть из его wat мне лично видятся вполне логичными (с опр. точки зрения), однако пару полезных моментов (из получасового выступления) подсмотреть удалось:

1. При объявлении gen_server в документации видим:

start_link() -> gen_server:start_link({local, ch3}, ch3, [] = _Args, []).
init([] = _Args) -> {ok, channels()}.

Весьма часто можно видеть (сам так делал) Args = [arg1, arg2], т.е. списком. Однакось суровая правда Erlang в том что _Args из gen_server:start_link/4 передается в init/1 как есть, то есть не обязано быть списком. Можно сделать так:

init(wat) -> ...
init({Arg1, Arg2}) -> ...
и т.д.

2. В том же gen_server в любой момент можно вызывать throw/1 или exit/1 с аргументом типа {reply,Reply,NewState} (см. объявление Result), и это приведет к нормальному завершению обработчика handle_call/handle_cast, т.е. без останова сервера. Вообще throw/1 это не throw, а non-local return.

July 2017

S M T W T F S
      1
23 45678
9101112 13 1415
1617 1819 20 2122
23242526272829
3031     

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2017 02:44 am
Powered by Dreamwidth Studios