9 рдЕрдкреНрд░реИрд▓ рдХреЛ, Erlang / OTP 17.0 рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдИред
Erlang рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдЦреНрдд рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ, рдЬреЛ рд╡рд┐рддрд░рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред
17.0 рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдХрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рдмрджрд▓рд╛рд╡ рд╣реИрдВред рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдпреЛрдЬрдирд╛ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ R16B, R15B, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдерд╛ред
рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ - рдореИрдкреНрд╕
рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬрд┐рд╕рдХрд╛ рд╕рднреА рдХреЛ рдЗрдВрддрдЬрд╛рд░ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
1> Map = #{ key1 => "Value1", key2 => "Value2"}. #{key1 => "Value1",key2 => "Value2"} 2> maps:get(key1, Map). "Value1" #{key2 := MatchValue} = Map. #{key1 => "Value1",key2 => "Value2"} 4> MatchValue. "Value2" Map2 = Map#{key3 => "Value3"}. #{key1 => "Value1",key2 => "Value2",key3 => "Value3"} Map3 = Map2#{key1 := change_value1}. #{key1 => change_value1,key2 => "Value2",key3 => "Value3"}
рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдХрдИ рд╕реАрдорд╛рдПрдБ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН:
- рдорд╛рди рдХреЗрд╡рд▓ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдорд╛рди = рдорд╛рдирдЪрд┐рддреНрд░ # {key1}
- рдЖрдк рдПрдХ рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ
рдмрд╛рдж рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА
рдпрд╣рд╛рдВ рд╣реИ ред
Erlang / OTP рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп OSE рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
OSE рдПрдХ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди, POSIX рдЖрдЬреНрдЮрд╛рдХрд╛рд░реА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЙрдкрдпреЛрдЧ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рд╛рдЗрд▓рд╛рдЗрдЯреНрд╕ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╕рднреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдм рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
1> TestFun = fun Factorial(0) -> 1; Factorial(Num) when Num > 0 -> Num * Factorial(Num - 1) end. #Fun<erl_eval.30.106461118> 2> TestFun(4). 24
рдпреВрдирд┐рдХреЛрдб рд╕рдорд░реНрдерди рд╡реГрджреНрдзрд┐
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рд╕реНрд░реЛрдд рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ utf8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдиреНрдп рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдБ ред
рдЙрд╕реА рддрд░рд╣
- рдЯреАрд╕реАрдкреА, рдпреВрдбреАрдкреА рдФрд░ рдПрд╕рд╕реАрдЯреАрдкреА рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдирдпрд╛ {рд╕рдХреНрд░рд┐рдп, рдПрди} рд╡рд┐рдХрд▓реНрдк
- ASN.1 OCTET STRING рд╕реЗ рдореИрдкрд┐рдВрдЧ рдФрд░ рдЗрд░реНрд▓рдВрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ ASN.1 рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕реБрдзрд╛рд░ рдФрд░ рдЕрдиреБрдХреВрд▓рди
- рдПрдХ рдирдпрд╛, рд╡реИрдХрд▓реНрдкрд┐рдХ, рдЕрдиреБрд╕реВрдЪрдХ рд╕рдВрддреБрд▓рди рддрдВрддреНрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
- "рдЧрдВрджреЗ" рдпреЛрдЬрдирд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рдЧрдИ
LYSE рдиреЗ рдореИрдкрд┐рдВрдЧ рдХреЗ рдирдП рдЕрдзреНрдпрд╛рдп рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ -
learnyousomeerlang.com/mapsрдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдЖрд░реНрдорд╕реНрдЯреНрд░рд╛рдВрдЧ -
http://joearms.imtqy.com/2014/02/01/big-changes-to-erlang.htmlрдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреИрдХреЗрдЬ
рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреЗ
рд╣реИрдВ ред
рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд▓реЙрдЧрдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдЪрд╛рд░