рдлрд┐рдирдЯреЗрдХ рдореЗрдВ, рд╣рдореЗрдВ рдЕрдХреНрд╕рд░ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореБрджреНрд░рд╛ рд╡рд┐рдирд┐рдордп рджрд░ рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдХрд▓, рдкрд░рд╕реЛрдВ, рдЕрдЧрд▓реЗ рдорд╣реАрдиреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд▓реЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рдордп рджрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдПред рдХрд╛рд╢ рдХреЛрдИ рджрд░реЛрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░ рдкрд╛рддрд╛ рдареАрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ, рдпрд╣ рд╡реНрдпрд╡рд╕рд╛рдп рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрд╡рдХ рдкреИрд╕реЗ рдХреЛ рдЖрдЧреЗ-рдкреАрдЫреЗ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрдЧрд╛ред рдХреБрдЫ рд╕реНрд░реЛрдд рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИрдВ, рдХреБрдЫ рдкреВрд░реНрдг рдХрдЪрд░рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рд╕рд╣реА рдореВрд▓реНрдпреЛрдВ рдХреЗ рджреБрд░реНрд▓рдн рд╕рдорд╛рд╡реЗрд╢рди рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рд╡рд┐рджреЗрд╢реА рдЬреЛрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдПред рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЗрди рд╣рдЬрд╝рд╛рд░реЛрдВ рдорд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдирд╛ рд╣реИред рд╣рдореЗрдВ рдЯрдиреЛрдВ рдЧрдВрджрдЧреА рдФрд░ рдЧрд╛рдж рдореЗрдВ рд╕реЗ рдПрдХ рд╕рд╣реА рдореВрд▓реНрдп рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рд░рд╛рдЬрд╣рдВрд╕ рджреЛрдкрд╣рд░ рдХреЗ рднреЛрдЬрди рдХреЗ рд╕рдордп рдХрд░рддреЗ рд╣реИрдВред
рд░рд╛рдЬрд╣рдВрд╕ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрдирдХреА рд╡рд┐рд╢рд╛рд▓ рдиреАрдЪреЗ рдХреА рдУрд░ рдореБрдбрд╝реА рд╣реБрдИ рдЪреЛрдВрдЪ рд╣реИ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рд╡реЗ рдкрд╛рдиреА рдпрд╛ рдХреАрдЪрдбрд╝ рд╕реЗ рднреЛрдЬрди рдЫрд╛рдирддреЗ рд╣реИрдВред
-рд╡рд┐рдХреА
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ Vela
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рддреАрди рдореБрджреНрд░рд╛ рдЬреЛрдбрд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджрд░реЗрдВ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкрд░рд┐рднрд╛рд╖рд╛ Vela
рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
defmodule Pairs do
use Vela,
eurusd: [sorter: &Kernel.<=/2],
eurgbp: [limit: 3, errors: 1],
eurcad: [validator: Pairs]
@behaviour Vela.Validator
@impl Vela.Validator
def valid?(:eurcad, rate), do: rate > 0
end
рдорд╛рди рдЕрджреНрдпрддрди рдХрд░ рд░рд╣рд╛ рд╣реИ
Vela.put/3
- рдЖ рдХрд╛рд░рдг рд╣реЛрдЧрд╛
validator
рдорд╛рди рдкрд░, рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЕрдзреНрдпрд╛рдп рджреЗрдЦреЗрдВ)ред рдорд╛рдиреНрдпрдХрд░рдг рдиреАрдЪреЗ); - рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рд╕рдлрд▓ рд░рд╣рд╛ рддреЛ рдорд╛рди рдХреЛ рдпрд╛ рддреЛ рдЕрдЪреНрдЫреЗ рдорд╛рдиреЛрдВ рдХреА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рд╕реЗрд╡рд╛ рдкрдВрдХреНрддрд┐ рдореЗрдВ
:__errors__
рдЕрдиреНрдпрдерд╛; - рдпрджрд┐ рдЫрдБрдЯрд╛рдИ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛
sorter
рдХрд┐рд╕реА рджреА рдЧрдИ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдмрд╕ рдорд╛рди рдХреЛ рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ (LIFO, рдЕрдзреНрдпрд╛рдп рджреЗрдЦреЗрдВ рдЫрдБрдЯрд╛рдИ рдиреАрдЪреЗ); - рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрдВрдХреНрддрд┐ рдХреЛ рдЯреНрд░рд┐рдо рдХрд░реЗрдЧрд╛
:limit
рд╕реГрдЬрди рдкрд░ рдкрд╛рд░рд┐рдд; - рдЕрджреНрдпрддрди рд╕рдВрд░рдЪрдирд╛ рд▓реМрдЯрд╛рдПрдЧрд╛
Vela
.
iex|1 > pairs = %Pairs{}
iex|2 > Vela.put(pairs, :eurcad, 1.0)
#тЗТ %Pairs{..., eurcad: [1.0], ...}
iex|3 > Vela.put(pairs, :eurcad, -1.0)
#тЗТ %Pairs{__errors__: [eurcad: -1.0], ...}
iex|4 > pairs |> Vela.put(:eurusd, 2.0) |> Vela.put(:eurusd, 1.0)
#тЗТ %Pairs{... eurusd: [1.0, 2.0]}
рднреА Vela
рдФрдЬрд╛рд░ Access
Kernel
Kernel.get_in/2
Kernel.put_in/3
Kernel.update_in/3
Kernel.pop_in/2
Kernel.get_and_update_in/3
рдорд╛рдиреНрдпрдХрд░рдг
рдПрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди (
&MyMod.my_fun/1
), рдпрд╣ рдХреЗрд╡рд▓ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛; - рджреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди,
&MyMod.my_fun/2
, рдЙрд╕реЗ рдПрдХ рдЬреЛрдбрд╝реА рдорд┐рд▓реЗрдЧреАserie, value
рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП; - рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
;Vela.Validator
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░
threshold
, рдФрд░ - рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ -compare_by
, рдЕрдзреНрдпрд╛рдп рджреЗрдЦреЗрдВ рддреБрд▓рдирд╛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдПред
рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдорд╛рди рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдВрдЬреА рдХреЗ рддрд╣рдд рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЕрдиреНрдпрдерд╛, рдЯрдкрд▓ {serie, value}
рдЬрд╛рддрд╛ рд╣реИ :__errors_
.
рддреБрд▓рдирд╛
рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рди рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛ рдкрдврд╝рд╛рдиреЗ рдХреЗ Vela
рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ compare_by
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ (рдЬрдм рддрдХ рдХрд┐ рдорд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдорд╛рдирдХ рд╕реЗ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА Kernel.</2
); рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (Vela.value() -> number())
. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рд░рд▓ рд╣реИ & &1
.
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдкрдВрдХреНрддрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ comparator
рдбреЗрд▓реНрдЯрд╛ рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (min
/max
); рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдХреЗ Date.diff/2
рддреБрд▓рдирд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдбреЗрд▓реНрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИ threshold
, рдЬреЛ рдирдП рдореВрд▓реНрдп рдХреЗ рдЕрдзрд┐рдХрддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЕрдиреБрдкрд╛рдд рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ {min, max}
рдордзреНрдпрд╛рдиреНрддрд░ред рдЪреВрдВрдХрд┐ рдЗрд╕реЗ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ comparator
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ compare_by
. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджрд┐рдирд╛рдВрдХ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ compare_by: &DateTime.to_unix/1
(рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдФрд░ threshold: 1
, рдЬрд┐рд╕рд╕реЗ рдирдП рдорд╛рдиреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬрдм рд╡реЗ рдЕрдВрджрд░ рд╣реЛрдВ ┬▒band
рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдЕрдВрддрд░рд╛рд▓.
рдЕрдВрдд рдореЗрдВ, рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Vela.equal?/2
рджреЛ рдХреИрд╢ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдорд╛рди рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ equal?/2
рдпрд╛ compare/2
, рддреЛ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдиреНрдпрдерд╛ рд╣рдо рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ ==/2
.
рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ рдХреЙрд▓рд┐рдВрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ Vela.purge/1
, рдЬреЛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ (рдпрджрд┐ validator
рд╕реЗ рдмрд╛рдВрдзрд╛ timestamps
). рдлрд┐рд░ рдЖрдк рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Vela.slice/1
рдЬреЛ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ keyword
рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдХреНрддрд┐ рдирд╛рдореЛрдВ рдФрд░ рдкреНрд░рдердо, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рдеред
рдЖрдк рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ get_in/2
/pop_in/2
рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдорд╛рдиреЛрдВ рддрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдПред
рдЕрдиреБрдкреНрд░рдпреЛрдЧ
Vela
рдЬреИрд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреИрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ GenServer
/Agent
. рд╣рдо рдХрднреА рднреА рдкреБрд░рд╛рдиреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдмрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рд░рдЦрддреЗ рд╣реИрдВ Vela
, рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рдеред
@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
do: Rate.age(rate) < @death_age
╨╕ Vela.purge/1
рдЬрдм рднреА рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдЪреБрдкрдЪрд╛рдк рд╕рднреА рдкреБрд░рд╛рдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдмрд╕ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ Vela.slice/1
, рдФрд░ рдЬрдм рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЗрддрд┐рд╣рд╛рд╕ (рд╕рдВрдкреВрд░реНрдг рд╢реНрд░реГрдВрдЦрд▓рд╛) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрд░рдордмрджреНрдз - рдорд╛рдиреНрдп рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддреЗ рд╣реИрдВред
рд╣реИрдкреНрдкреА рдЯрд╛рдЗрдо рд╕реАрд░реАрдЬрд╝ рдХреИрд╢рд┐рдВрдЧ!
рд╕реНрд░реЛрдд: www.habr.com