рдлрдВрдХреНрд╢рди рдЖрдзрд╛рд░рд┐рдд рдЗрдЯрд░реЗрдЯрд░ рдФрд░ рдЬреЗрдирд░реЗрдЯрд░

рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 1.7 рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдФрд░ рдЖрдк рдХреЗрд╡рд▓ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЗрди рдЕрджреНрднреБрдд рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдкрдирд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕рд╛ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ :)

рдЕрдкрдиреЗ рд╡рд┐рд╖рдп рдореЗрдВ, рдореИрдВ рдЕрдХреНрд╕рд░ "рдЕрд╕рд▓реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдореЗрд░рд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ 1.7 рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрд╣реБрдд рд╣реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд┐ aterproduction Iterators рдФрд░ рдЬрдирд░реЗрдЯрд░реЛрдВ рд╡рд┐рд╖рдп рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рддред
рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЙрдирдХреЗ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

рддреЛ рдЪрд▓рд┐рдП!

рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ


рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рд╣реИ, рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ рдпреВрдирд┐рдЯ рдХрд╣рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдЪрдХреНрд░реАрдп рдХреНрд░рдо рдореЗрдВ рд╕реЗрдЯ [рд▓рд╛рд▓, рд╣рд░рд╛, рдиреАрд▓рд╛] рд╕реЗ рд╕рднреА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рд░рдВрдЧ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдкрд╣рд▓реА рдЗрдХрд╛рдИ рд▓рд╛рд▓ рд╣реИ, рджреВрд╕рд░реА рд╣рд░реА рд╣реИ, рддреАрд╕рд░реА рдиреАрд▓реА рд╣реИ, рдЪреМрдереА рдлрд┐рд░ рд╕реЗ рд▓рд╛рд▓ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рдпрд╣ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд░рд┐рд╡реЙрд▓реНрд╡рд░ рдХрд╣рддрд╛ рд╣реВрдВред

var colors = new Revolver(['red', 'green', 'blue']); for (var i = 0; i < units.length; i += 1) { units[i].color = colors.next(); } 

рд░рд┐рд╡рд╛рд▓реНрд╡рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

 function Revolver(items) { this.items = items; this.max = items.length - 1; this.i = -1; } Revolver.prototype.next = function () { this.i = this.i < this.max ? this.i + 1 : 0; return this.items[this.i]; }; 

рдореБрдЭреЗ рдпрд╣ рдХреЛрдб рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рддреБрдо рдкреВрдЫрддреЗ рд╣реЛ рдХреНрдпреЛрдВ? рдореИрдВ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реВрдВ: рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЗрд╢рд╛рд░реЛрдВред рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ, рдмрд╕ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рд░рдВрдЧрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдХрд░рдирд╛ рдерд╛:
  1. рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ
  2. рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ,
  3. рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ,
  4. рд╕реЗрдЯ рд╕реЗ рдЕрдЧрд▓рд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреА рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред

рдХреНрдпрд╛ рд░рд┐рд╡реЙрд▓реНрд╡рд░ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдб рдЫреЛрдЯрд╛ рд╣реЛ рдЬрд╛рдП, рдФрд░ рдЕрд░реНрде рдЕрдзрд┐рдХ рд╣реЛ?
рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реНрдпреВрдХ!

 function revolver(items) { var max = items.length - 1, i = -1; return function () { i = i < max ? i + 1 : 0; return items[i]; }; } var next_color = revolver(['red', 'green', 'blue']); for (var i = 0; i < units.length; i += 1) { units[i].color = next_color(); } 

рдЕрдм рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИред
рдЕрд░реНрде рдХреА рдПрдХрд╛рдЧреНрд░рддрд╛ рдЕрдзрд┐рдХрддрдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдВрдЧреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реЗрдЯ рд╕реЗ рдЕрдЧрд▓реЗ рд░рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ ред

рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЗрдЯрд░реЗрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд┐рджреНрдзрд╛рдВрдд


рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛) рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣ рдЖрд░, рдЬреА, рдмреА, рдЖрд░, рдЬреА, рдмреА, ..., рдФрд░ рд░рдВрдЧреЛрдВ рдХреА рдПрдХ рдЕрдВрддрд╣реАрди рджреЛрд╣рд░рд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реЗрдЯ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИрдВред

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

рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд░рд┐рд╡реЙрд▓реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдЪрд░рд┐рдд рд╕реЗрдЯ рд╕реЗ рдЕрдирдВрдд рдЕрдиреБрдХреНрд░рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЬрдирд░реЗрдЯрд░ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  1. рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХреНрд░рдорд┐рдХ рдХреЙрд▓ рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ;
  2. рдПрдХ рдЬрдирд░реЗрдЯрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИред

рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдЕрдирдВрдд рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдкреАрдврд╝реА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рдЕрдиреБрдХреНрд░рдоред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 function fibonacci() { var fn1 = 1, fn2 = 1; return function () { var current = fn1; fn1 = fn2; fn2 = fn2 + current; return current; }; } var sequence = fibonacci(); for (var i = 0; i < 5; i += 1) { console.log(sequence()); // 1, 1, 2, 3, 5 } 

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдЗрд╕ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ:

 function fibonacci(){ var fn1 = 1, fn2 = 1; while (1) { var current = fn1; fn1 = fn2; fn2 = fn2 + current; yield current; } } 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛?

рдЕрднреНрдпрд╛рд╕


рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╡реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред

рд▓реВрдк рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЕрд╕рд▓реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдБ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИрдВред рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрдВрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдЯрд░реЗрдЯрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХрдерди рдХреЗ рд▓рд┐рдП рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрддрд╛ рд╣реИред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдкрд╣рд▓реА рдЪреАрдЬ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрдВрдд рдХрд╛ рдкрджрдирд╛рдо рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХреЗ рдЕрдВрдд рд╕реЗ рдкрд╣рд▓реЗ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдЧрд╛ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ: рдЬрдм рддрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕реА рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЬрдм рддрддреНрд╡ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред

рджреВрд╕рд░рд╛ рд╡рд╣ рдирд┐рд░реНрдорд╛рдг рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдЬрд╛рдЗрди рдХреЛ рди рдХреЗрд╡рд▓ рдЗрдЯреНрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рднреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:

 //  тАФ while var item; while (item = iterator()) { //  item } //  тАФ for for (var item, iter = generator(); item = iter();) { //  item } 

рдПрдХ рдЪрдХреНрд░ рдХреЗ рдЖрдпреЛрдЬрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг: рджреЛ рдХреА рд╢рдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЬрдирд░реЗрдЯрд░ рд╕рдВрдЦреНрдпрд╛ рдПрди рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред

 function powers_of_two(N) { var value = 1; return function () { var result = value; value *= 2; if (result < N) { return result; } }; } for (var p, iter = powers_of_two(42); p = iter();) { console.log(p); // 1, 2, 4, 8, 16, 32 } 


рдорд░рд╣рдо рдореЗрдВ рдЙрдбрд╝реЛ, рдЬрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛

рд░рд┐рдпрд▓ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЬреЛ рдЕрдВрддрд┐рдо рдЙрдкрдЬ рд╡рд┐рд╡рд░рдг рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЗ рдмрд┐рдВрджреБ рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдирд┐рдХрд╛рдп рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓реАрдирд┐рдпрд░ рдХреЛрдб, рддрддреНрд╡реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд▓реВрдк рдпрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред

рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг Iterators рдФрд░ рдЬрдирд░реЗрдЯрд░реНрд╕ рд╡рд┐рд╖рдп рд╕реЗ рдПрдХ рдкреЗрдбрд╝ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдЬрдирд░реЗрдЯрд░ рд╣реИ:

 function inorder(t) { if (t) { for (var item in inorder(t.left)) { yield item; } yield t.label; for (var item in inorder(t.right)) { yield item; } } } 

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ - рд╣рдо рдмрд╛рдИрдВ рд╢рд╛рдЦрд╛ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЬрдбрд╝, рдлрд┐рд░ рджрд╛рдИрдВ рд╢рд╛рдЦрд╛ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛред рдХреНрд▓рд╛рд╕ред

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

рдЖрдЗрдП рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреЗрдбрд╝ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
1, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рддрд░реНрдХ рдХрд╛ рджреЛрд╣рд░рд╛рд╡:

 function inorder(t) { var root = false, left, right; if (t) { left = inorder1(t.left); right = inorder1(t.right); return function () { var item; if (item = left()) { return item; } if (!root) { root = true; return t.label; } if (item = right()) { return item; } }; } else { return function () {}; } } 

рдпрд╣ рдРрд╕рд╛ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рджреЛ рдЪреАрдЬреЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреБрдЦрдж рд╣реИрдВред

1. рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рддреАрди рд╡рд╛рдкрд╕реА рдмрдпрд╛рдиреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ред рдЙрдкрдЬ рдХрдерди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рддрд░реНрдХрд╕рдВрдЧрдд рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рд╕реЗ рдЬрд╛рд░реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рд░рд┐рдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддрд░реНрдХ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдордЭрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

2. рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рдЦрд╛рд▓реА рдкреЗрдбрд╝ рдПрдХ рдЕрд▓рдЧ рдЦрд╛рд▓реА рдЗрдЯреНрд░реЗрдЯрд░ рд░рд┐рдЯрд░реНрди рдлрд╝рдВрдХреНрд╢рди () {} рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдЧреЗ рдХреЛрдб рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕реНрд░реЛрдд рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рддрд░реНрдХ рдХреА рдирдХрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдПред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдЖрдЗрдП рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
 function inorder(t) { var roots = [t], //     iters = []; if (t) { iters.push(inorder(t.left)); iters.push(function () {return roots[0] && roots.shift().label}); //   iters.push(inorder(t.right)); } return function () { var leaf; while (iters.length) { leaf = iters[0](); if (leaf) { return leaf; } iters.shift(); } }; } 

рдпрд╣ рд▓рдЧрднрдЧ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛ - рдЗрдЯреНрд░реЗрдЯрд░ рдореЗрдВ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдПрдХ рд╣реИ, рдФрд░ рдЗрдЯрд░реЗрдЯрд░ рдХрд╛ рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЬрдирд░реЗрдЯрд░ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдирд░реЗрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╡рд┐рдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

Iterator рдкреНрд░рдмрдВрдзрди


рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд▓реЛрдЧ рд╡рд┐рд╖рдп рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЖрдкрддреНрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рд╕реЗ: "рдПрдХ рдорд┐рдирдЯ рд░реБрдХреЛ, рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЗрдЯреЗрдЯрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИред "рдорд╣рд╛рди, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдкреБрдирд░рд╛рд╡реГрддреНрдд рд░рд╛рдЬреНрдп рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ?"

рдЬрд╡рд╛рдм рд╣реИ: рдореИрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реВрдВрдЧрд╛ :) рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд╛рд░реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред рдмреЗрд╢рдХ, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рддрд░реАрдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рдЕрдиреБрдХреНрд░рдо, рдЕрдм рдПрдХ рд░реАрд╕реЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде:

 function fibonacci_restartable() { var fn1 = 1, fn2 = 1, iterator; iterator = function () { var current = fn1; fn1 = fn2; fn2 = fn2 + current; return current; }; iterator.restart = function () { fn1 = fn2 = 1; }; return iterator; } var sequence = fibonacci_restartable(); for (var i = 0; i < 5; i += 1) { console.log(sequence()); // 1, 1, 2, 3, 5 } sequence.restart(); for (var i = 0; i < 5; i += 1) { console.log(sequence()); // 1, 1, 2, 3, 5 } 

рд╢рдмреНрджрд╛рд╡рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрдирд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╣реИ , рдЬрд┐рд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрдЯреНрд░реЗрдЯрд░ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рд╣реИред
рдЗрд╕реА рддрд░рд╣, рдЗрдЯрд░реЗрдЯрд░ рдХреЛ рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЛрдВ рд╕реЗ рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ Iterators рдФрд░ рдЬрдирд░реЗрдЯрд░ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдХрд╛рд░рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрдбрд╝ рд▓реЗрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдиреАрдЪ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдФрд░ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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


All Articles