рдПрдХ рдЯреНрдпреВрдкрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░рдирд╛

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдореИрдВ рдПрд░рд▓рд╛рдВрдЧ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд╕рд░ рдкрд░ рдЖрдпрд╛ рдерд╛ред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЯреНрдпреВрдкрд▓ рдкрд╛рд╕ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдкрд╣рд▓рд╛ рддрддреНрд╡ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛
arity рдХреЛ рдПрдХ рдФрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рддрд░реНрдХ рд╕рдорд╛рди рдЯреНрдпреВрдкрд▓ рд╣реЛрдЧрд╛ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
-module(my_module). -export([test/2]). test(Arg1,{?MODULE,Arg2}) -> io:format("Arg1:~p~nArg2:~p~n",[Arg1,Arg2]). 

рдЖрдк рдЗрд╕ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 my_module:test(1,{my_module,2}). 
рдпрд╛ рддреЛ
 {my_module,2}:test(1). 


рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрдЯ рдбреЗрдЯрд╛ рдЯрд╛рдЗрдкреНрд╕ (рдбреЗрдЯрд╛ рдореЙрдбрд▓) рдмрдирд╛рддреЗ рд╕рдордп рдЬрд╣рд╛рдВ рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рдЯрдкрд▓ рдореЗрдВ рдЬрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛, рд░рд┐рдХреЙрд░реНрдб -рдИ рдореЗрдВ рдФрд░ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ,)ред
 -module(user). -export([new/0,save/1]). -export([name/1,set_name/1]). -export([proplist/1]). % record name must be same as module name. -record(user,{id,name}). new() -> {ok,#user{}}. name(#user{name=Name}) -> Name. set_name(NewName) -> {ok,State#user{name=NewName}}. % тАж Some other code ... save(#user{id=undefined,name=Name} = State) -> % Create new object in db; % ... {ok,State}; save(#user{id=ID,name=Name} = State) -> % Update an object in database % ... {ok,State}; proplist(#user{id=ID,name=Name}) -> [{id,ID}, {name,Name}]. 

рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:
 {ok,User} = user:new(), {ok,User2} = User:set_name("SomeName"), {ok,User3} = User2:save(), UserName = User3:name(). 

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡рд┐рдЪрд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╢реИрд▓реА рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрд░реНрд▓реИрдВрдЧ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд╛рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛрдб рдХрд╛ рд╕реНрдереИрддрд┐рдХ рд╕рддреНрдпрд╛рдкрди рдЬрдЯрд┐рд▓ рд╣реИ ред рд╕рд╛рде рд╣реА, рдпрд╣ рдХреЛрдб рдЗрд╕рд╕реЗ рдЕрд▓рдЧ рд╣реИ
 {ok,User} = user:new(), {ok,User2} = user:set_name("SomeName",User), {ok,User3} = user:save(User2), UserName = user:name(User3). 

рдХреЗрд╡рд▓ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╣рд░ рдЬрдЧрд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛ ред

рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдХрд╛рд░рдг рдХрд┐рдпрд╛, рдЗрд╕реЗ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдореЙрдбрд▓ рдореЗрдВ, proplist () рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ)ред

рдПрдХ RESTful рд╕реЗрд╡рд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╣ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рджрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХрд┐рд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╣реИрдВред
 to_json(Resource) -> Proplist = Resource:proplist(), Json = mochijson2_fork:encode({struct,[Proplist]}), {ok,Json}. to_xml(Resource) -> Proplist = Resource:proplist(), XML = SomeProplistToXmlGenerator(Proplist), {ok,XML}. 

Source: https://habr.com/ru/post/In146471/


All Articles