рдЬреЛрд╕реЗрдл рд░рд╛рдЗрдЯ, рдж рдкреНрд░рд┐рдЬрдирд░ - рдЗрд▓рд╕реНрдЯреНрд░реЗрд╢рди рдСрдл рдП рд╕реНрдЯреНрд░рд╛рдВрдЧ рдХреИрдкреНрдЪрд░
"рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП" рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреНрд▓реЛрдЬрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рдордиреЗ рд╣реИ рдФрд░ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕реЗ "рдХреИрдкреНрдЪрд░" рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ: рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдордЬрдмреВрдд", "рдХрдордЬреЛрд░" рдпрд╛ "рдЕрдЬреНрдЮрд╛рдд"ред рд╣рдо рдЕрдХреНрд╕рд░ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдордЬрдмреВрдд рд╕рдВрджрд░реНрдн рдЪрдХреНрд░ ("рдордЬрдмреВрдд рд╕рдВрджрд░реНрдн рдЪрдХреНрд░" рдЙрд░реНрдл тАЛтАЛ"рдЪрдХреНрд░ рдмрд░рдХрд░рд╛рд░") рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред
рдХрд┐рд╕реА рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рддрдп рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк "рдордЬрдмреВрдд" рдФрд░ "рдХрдордЬреЛрд░" рдпрд╛ "рдХрдордЬреЛрд░" рдФрд░ "рдЕрдЬреНрдЮрд╛рдд" рдХреЗ рдмреАрдЪ рдЪреБрдирдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдПрд╣рд╕рд╛рд╕ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк - рдХреЗрд╡рд▓ рдПрдХред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ:
class Singer { func playSong() { print("Shake it off!") } }
рдлрд┐рд░ рд╣рдо рдПрдХ рдРрд╕рд╛ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ
рд╕рд┐рдВрдЧрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдХреНрд▓реЛрдЬрд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ
рд╕рд┐рдВрдЧрд░ рдХреНрд▓рд╛рд╕ рдХрд╛
рдкреНрд▓реЗрд╕реЙрдиреНрдЧ () рд╡рд┐рдзрд┐ рдХрд╣рддрд╛ рд╣реИ:
func sing() -> () -> Void { let taylor = Singer() let singing = { taylor.playSong() return } return singing }
рдЕрдВрдд рдореЗрдВ, рд╣рдо
рдкреНрд▓реЗрд╕реЙрдиреНрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рднреА
рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ
() let singFunction = sing() singFunction()
рдирддреАрдЬрддрди, рд▓рд╛рдЗрди "рдЗрд╕реЗ рд╣рд┐рд▓рд╛рдУ!" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдордЬрдмреВрдд рдХрдмреНрдЬрд╛
рдЬрдм рддрдХ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреИрдкреНрдЪрд░ рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ, рддрдм рддрдХ рд╕реНрд╡рд┐рдлреНрдЯ "рдордЬрдмреВрдд" рдХреИрдкреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрдВрдж рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдмрд╛рд╣рд░реА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрднреА рднреА рдореБрдХреНрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рджреЗрдЧрд╛ред
рдЖрдЗрдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░
рдЧрд╛рдпрди () рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ
func sing() -> () -> Void { let taylor = Singer() let singing = { taylor.playSong() return } return singing }
рдЯреЗрд▓рд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рд╕рдорд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХреА рдЬрдЧрд╣ рдХреЛ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд▓реЛрдЬрд░ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж рднреА рдХреНрд▓реЛрдЬрд░ рд╕реНрд╡рдпрдВ рдореМрдЬреВрдж рд╣реИред
рдпрд╣ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдПрдХ "рдордЬрдмреВрдд" рдХрдмреНрдЬрд╛ рд╣реИред рдпрджрд┐ рд╕реНрд╡рд┐рдлреНрдЯ рдиреЗ
рдЯреЗрд▓рд░ рдХреЛ рдореБрдХреНрдд
рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ, рддреЛ рдХреЙрд▓рд┐рдВрдЧ рдмрдВрдж рдХрд░рдирд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ - рдЗрд╕рдХреА
taylor.playSong () рд╡рд┐рдзрд┐ рдЕрдм рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред
"рдХрдордЬреЛрд░" рдХрдмреНрдЬрд╛ (рдХрдордЬреЛрд░ рдХрдмреНрдЬрд╛)
рд╕реНрд╡рд┐рдлреНрдЯ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "
рдХреИрдкреНрдЪрд░ рд╕реВрдЪреА " рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред "рдордЬрдмреВрдд" рдХреИрдкреНрдЪрд░ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк "рдХрдордЬреЛрд░" рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рд╕реЗ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЗ рд╣реИрдВ:
9. "рдХрдордЬреЛрд░" рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП рдорд╛рди рдХреНрд▓реЛрдЬрд░ рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░
рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
2. рдкрд╣рд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ "рдХрдордЬреЛрд░ рд░реВрдк рд╕реЗ рдкрдХрдбрд╝реЗ рдЧрдП" рдорд╛рди рд╣рдореЗрд╢рд╛
рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВред
рд╣рдо "рдХрдордЬреЛрд░" рдХреИрдкреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рдЕрдВрддрд░ рджреЗрдЦрддреЗ рд╣реИрдВред
func sing() -> () -> Void { let taylor = Singer() let singing = { [weak taylor] in taylor?.playSong() return } return singing }
[рдХрдордЬреЛрд░ рдЯреЗрд▓рд░] - рдпрд╣ рд╣рдорд╛рд░реА "
рдХреИрдкреНрдЪрд░ рд▓рд┐рд╕реНрдЯ " рд╣реИ, рдХреНрд▓реЛрдЬрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рднрд╛рдЧ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐
рдЯреЗрд▓рд░ рдХреЛ "рдХрдордЬреЛрд░ рд░реВрдк рд╕реЗ" рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ
рдЯреЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
редPlaySong () - рдЕрдм рдпрд╣
рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдордп
рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЕрдм рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреЙрд▓рд┐рдВрдЧ
рд╕рд┐рдВрдЧрдлрдВрдХреНрд╢рди () рдЕрдм рд╕рдВрджреЗрд╢ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐
рдЯреЗрд▓рд░ рдХреЗрд╡рд▓
рд╕рд┐рдВрдЧ () рдХреЗ рдЕрдВрджрд░ рд╣реА рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдЗрд╕ рдлрдВрдХреНрд╢рди рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛
рдЯреЗрд▓рд░ рдЕрдкрдиреЗ рдЕрдВрджрд░ "рджреГрдврд╝рддрд╛ рд╕реЗ"
рдЯреЗрд▓рд░ рдХреЛ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред
рдЕрдм
taylor рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
? .PlaySong () рд╕реЗ
taylor! (.PlaySong) () ред рдпрд╣ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЯреЗрд▓рд░ рдХреЗ рдЬрдмрд░рди рдЕрдирдкреИрдХрд┐рдВрдЧ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдЧрд╛, рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдПрдХ рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐ (
рд╢реВрдиреНрдп рд╕реЗ рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдирд╛)
"рдУрдирд░рд▓реЗрд╕" рдХреИрдкреНрдЪрд░ (рдЕрдЬреНрдЮрд╛рдд рдХреИрдкреНрдЪрд░рд┐рдВрдЧ)
"рдХрдордЬреЛрд░" рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк "рдорд╛рд▓рд┐рдХ" рд╣реИред
func sing() -> () -> Void { let taylor = Singer() let singing = { [unowned taylor] in taylor.playSong() return } return singing }
рдпрд╣ рдХреЛрдб рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреЗ рд╕рд╛рде рд╣реИ - рдкреНрд░рд╕рд┐рджреНрдз
рдЯреЗрд▓рд░ рдХрд╣рддрд╛ рд╣реИ: "рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреНрд▓реЛрдЬрд░ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП
рдЯреЗрд▓рд░ рдореМрдЬреВрдж рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
рдЯреЗрд▓рд░ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рдХреЛрдб рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП
рдЕрдирдЬрд╛рдиреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдмреЗрд╣рдж рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд░реЗрдВред
рдЖрдо рд╕рдорд╕реНрдпрд╛рдПрдВ
рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рдореВрд▓реНрдп рдХреИрдкреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЪрд╛рд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВ:
1. рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреИрдкреНрдЪрд░ рд╕реВрдЪреА рдХреЗ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдХрдард┐рдирд╛рдЗрдпрд╛рдБ
рдпрд╣ рдПрдХ рдЖрдо рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕рд╛рдордирд╛ рдЖрдк рдХреНрд▓реЛрдЬрд░ рдХреЗ рдЕрдзреНрдпрдпрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕реНрд╡рд┐рдлреНрдЯ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧреАред
рдХреИрдкреНрдЪрд░ рд╕реВрдЪреА рдФрд░ рдХреНрд▓реЛрдЬрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреИрдкреНрдЪрд░ рд╕реВрдЪреА рдкрд╣рд▓реЗ рд╕реНрдХреНрд╡рд╛рдпрд░ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдлрд┐рд░ рдХреНрд▓реЛрдЬрд░ рдкреИрд░рд╛рдореАрдЯрд░, рдлрд┐рд░ рдХреАрд╡рд░реНрдб рдореЗрдВ, рдХреНрд▓реЛрдЬрд░ "рдмреЙрдбреА" рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред
writeToLog { [weak self] user, message in self?.addToLog("\(user) triggered event: \(message)") }
рдХреНрд▓реЛрдЬрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рдж рдХреИрдкреНрдЪрд░ рд╕реВрдЪреА рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рд╣реЛ рдЬрд╛рдПрдЧреАред
2. рдордЬрдмреВрдд рд▓рд┐рдВрдХ рдХреЗ рдПрдХ рдЪрдХреНрд░ рдХрд╛ рдЙрджреНрднрд╡, рдПрдХ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА
рдЬрдм рдПрдХ рдЗрдХрд╛рдИ A рдХреА рдПрдХ рдЗрдХрд╛рдИ B рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ "рдЪрдХреНрд░ рдмрдирд╛рдП рд░рдЦрдирд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
class House { var ownerDetails: (() -> Void)? func printDetails() { print("This is a great house.") } deinit { print("I'm being demolished!") } }
рд╣рдордиреЗ
рд╣рд╛рдЙрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ (рдХреНрд▓реЛрдЬрд░), рдПрдХ рд╡рд┐рдзрд┐, рдФрд░ рдПрдХ рдбреА-рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрдм рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдм рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рдПрдХ
рдорд╛рд▓рд┐рдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЙрд╕рдХреА рдмрдВрдж рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдШрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред
class Owner { var houseDetails: (() -> Void)? func printDetails() { print("I own a house.") } deinit { print("I'm dying!") } }
рдЕрдм рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЗ
do рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБред рд╣рдореЗрдВ рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди
do рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ}
print("Creating a house and an owner") do { let house = House() let owner = Owner() } print("Done")
рдирддреАрдЬрддрди, рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ: "рдПрдХ рдШрд░ рдФрд░ рдПрдХ рдорд╛рд▓рд┐рдХ рдмрдирд╛рдирд╛", "рдореИрдВ рдорд░ рд░рд╣рд╛ рд╣реВрдБ!", "рдореИрдВ рдзреНрд╡рд╕реНрдд рд╣реЛ рдЧрдпрд╛ рд╣реВрдБ!", рдлрд┐рд░ "рдкреВрд░реНрдг" - рд╕рдм рдХреБрдЫ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдм рдордЬрдмреВрдд рд▓рд┐рдВрдХ рдХрд╛ рдПрдХ рд▓реВрдк рдмрдирд╛рдПрдВред
print("Creating a house and an owner") do { let house = House() let owner = Owner() house.ownerDetails = owner.printDetails owner.houseDetails = house.printDetails } print("Done")
рдЕрдм рд╕рдВрджреЗрд╢ "рдПрдХ рдШрд░ рдФрд░ рдПрдХ рдорд╛рд▓рд┐рдХ рдмрдирд╛рдиреЗ" рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдлрд┐рд░ "рдХрд┐рдпрд╛"ред Deinitializers рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реБрдЖ рдХрд┐ рдШрд░ рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬреЛ рдорд╛рд▓рд┐рдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдорд╛рд▓рд┐рдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬреЛ рдШрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдореЗрдореЛрд░реА рд▓реАрдХ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЦрд░рд╛рдм рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд░реИрд╢ рднреА рдХрд░рддрд╛ рд╣реИред
рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдХреНрд▓реЛрдЬрд░ рдмрдирд╛рдиреЗ рдФрд░ рдПрдХ рдпрд╛ рджреЛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ "рдХрдордЬреЛрд░" рдХреИрдкреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ:
print("Creating a house and an owner") do { let house = House() let owner = Owner() house.ownerDetails = { [weak owner] in owner?.printDetails() } owner.houseDetails = { [weak house] in house?.printDetails() } } print("Done")
рдкрдХрдбрд╝реЗ рдЧрдП рджреЛрдиреЛрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдпрд╣ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдордЬрдмреВрдд рд▓рд┐рдВрдХ рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЪрдХреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЕрдзрд┐рдХ рд╕рдХреНрд╖рдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде "рдХрдордЬреЛрд░" рдХреИрдкреНрдЪрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╣рддреНрд╡ рдХреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред
3. рдХрдИ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддреЗ рд╕рдордп, рдЖрдорддреМрд░ рдкрд░ рдордЬрдмреВрдд рд▓рд┐рдВрдХ рдХрд╛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ
рд╕реНрд╡рд┐рдлреНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдордЬрдмреВрдд рдкрдХрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
func sing() -> () -> Void { let taylor = Singer() let adele = Singer() let singing = { [unowned taylor, adele] in taylor.playSong() adele.playSong() return } return singing }
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрд▓реЛрдЬрд░ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝реЗ рдЧрдП рджреЛ рдореВрд▓реНрдп рд╣реИрдВ, рдФрд░ рд╣рдо рджреЛрдиреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЗрд╡рд▓
рдЯреЗрд▓рд░ рдХреЛ рдЕрдЬреНрдЮрд╛рдд рдХреЗ рд░реВрдк
рдореЗрдВ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ -
рдПрдбреЗрд▓ рдХреЛ рдЬреЛрд░рджрд╛рд░ рддрд░реАрдХреЗ
рд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП рдорд╛рди рдХреЗ рд▓рд┐рдП
рдЕрдЬреНрдЮрд╛рдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рджреЛрдиреЛрдВ рдорд╛рдиреЛрдВ рдХреЛ "
рдЕрдЬреНрдЮрд╛рдд " рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
[unowned taylor, unowned adele]
4. рдХреЙрдкреА рдХреНрд▓реЛрдЬрд░ рдФрд░ рд╢реЗрдпрд░ рдХрд┐рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ
рдЕрдВрддрд┐рдо рдорд╛рдорд▓рд╛ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдареЛрдХрд░ рдорд╛рд░рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рджреЛрд╖реЛрдВ рдХреА рдирдХрд▓ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЬреЛ рдбреЗрдЯрд╛ рдХреИрдкреНрдЪрд░ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдлреЙрд▓реНрдЯ рдХреА рд╕рднреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреНрд▓реЛрдЬрд░ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдкреВрд░реНрдгрд╛рдВрдХ рд╡реИрд░рд┐рдПрдмрд▓
рдирдВрдмрд░ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред рдмрдВрдж рдХрд┐рдП рдЧрдП рдХреЗ рдмрд╛рд╣рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрдврд╝рд╛ рд╕рдХреЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдкреНрд░рд┐рдВрдЯ рдЖрдЙрдЯ рдХрд╣рд╛ рдЬрд╛ рд╕рдХреЗ:
var numberOfLinesLogged = 0 let logger1 = { numberOfLinesLogged += 1 print("Lines logged: \(numberOfLinesLogged)") } logger1()
рдпрд╣ рд╕рдВрджреЗрд╢ "рд▓рд╛рдЗрдиреНрд╕ рд▓реЙрдЧ рдЗрди: 1" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
рдЕрдм рд╣рдо рдЙрд╕ рдХреНрд▓реЛрдЬрд░ рдХреА рдПрдХ рдХреЙрдкреА рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдкрд╣рд▓реЗ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдореВрд▓ рдмрдВрдж рдпрд╛ рдЗрд╕рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЪрд░ рдХреЗ рдмрдврд╝рддреЗ рдореВрд▓реНрдп рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред
let logger2 = logger1 logger2() logger1() logger2()
рдпрд╣ "рд▓рд╛рдЗрдиреНрд╕ рд▓реЙрдЧ рдЗрди: 1" ... "рд▓рд╛рдЗрдиреНрд╕ рд▓реЙрдЧ рдЗрди: 4" рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐
рд▓реЙрдЧрд░ 1 рдФрд░
рд▓реЙрдЧрд░ 2 рдПрдХ рд╣реА рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП
рдирдВрдмрд░рдСрдирд▓рд╛рдЗрдирд▓реЙрдЧреНрдб рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
"рдордЬрдмреВрдд" рдХреИрдкреНрдЪрд░, "рдХрдордЬреЛрд░" рдФрд░ "рдУрдирд░рд▓реЗрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░реЗрдВ
рдЕрдм рдЬрдм рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
1. рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдмрдВрдж рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдХрднреА рднреА
рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рддреЛ рдЖрдк
"рдЕрдЬреНрдЮрд╛рдд рдХреИрдкреНрдЪрд░рд┐рдВрдЧ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрд╕реАрдо рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ "рдХрдордЬреЛрд░" рдХреИрдкреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм рдЧрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдХрдордЬреЛрд░ рдХрдмреНрдЬрд╛ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред
2. рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдордЬрдмреВрдд рд▓рд┐рдВрдХ рдЪрдХреНрд░ (рдирд┐рдХрд╛рдп A рдХрд╛ рдорд╛рд▓рд┐рдХ B рд╣реИ, рдФрд░ рдирд┐рдХрд╛рдп B рдХрд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдЗрдХрд╛рдИ A рд╣реИ) рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЖрдкрдХреЛ
"рдХрдордЬреЛрд░ рдХреИрдкреНрдЪрд░рд┐рдВрдЧ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕реА рд╕рдВрд╕реНрдерд╛ рдкрд╣рд▓реЗ рдореБрдХреНрдд рд╣реЛ рдЬрд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рджреГрд╢реНрдп рдП, рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдмреА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдмреА рдореЗрдВ "рдП" рдХреЗ рд▓рд┐рдП "рдХрдордЬреЛрд░" рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
3. рдпрджрд┐ рдордЬрдмреВрдд рд▓рд┐рдВрдХ рдХреЗ рдЪрдХреНрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк "рдордЬрдмреВрдд" рдХреИрдкреНрдЪрд░ (
"рдордЬрдмреВрдд рдХреИрдкреНрдЪрд░рд┐рдВрдЧ" ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдПрдиреАрдореЗрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдПрдиреАрдореЗрд╢рди рд╡рд╛рд▓реЗ рдХреНрд▓реЛрдЬрд░ рдХреЗ рдЕрдВрджрд░ рд╕реНрд╡рдпрдВ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдордЬрдмреВрдд рдмрдВрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
4. рдпрджрд┐ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдПрдХ "рдХрдордЬреЛрд░" рдмрдВрдзрди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЗрд╕реЗ рдмрджрд▓ рджреЗрдВред
рд╡реИрдХрд▓реНрдкрд┐рдХ - рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрд╡рд┐рдлреНрдЯ рдЧрд╛рдЗрдб:
рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯрд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓рд┐рдВрдХ рдХреА рдЧрд┐рдирддреА