рдХреЛрдЯрд▓рд┐рди рд╕рдВрджрд░реНрдн-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдЪрдп

рдпрд╣ рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рд╕рдВрджрд░реНрдн-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдЪрдп рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ

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

рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж


рдЬреИрд╕рд╛ рдХрд┐ рд╕рд░реНрд╡рд╡рд┐рджрд┐рдд рд╣реИ, рддреАрди рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди рд╣реИрдВ ( рдкреЗрдбреЗрдВрдЯ рдХрд╛ рдзреНрдпрд╛рди рджреЗрдВ : рдЕрдиреНрдп рдкреНрд░рддрд┐рдорд╛рди рд╣реИрдВ):

  • рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
  • рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
  • рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

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

рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреА рд╣реИред рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕реА рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( рдкреЗрдбреЗрдВрдЯ рдХрд╛ рдиреЛрдЯ : рдХреБрдЫ рд╢рд╛рд╕реНрддреНрд░реАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рдкреНрд░рдгрд╛рд▓реА рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЧреБрдВрдЬрд╛рдЗрд╢; рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рднрд╛рд╖рд╛! = C)ред

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

рдмреЗрд╢рдХ, рдпрд╣рд╛рдВ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╡рд░реНрдЧ рдпрд╛ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░ рдХреЗрд╡рд▓ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдФрд░ рд╕реБрд▓рдн рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рдмрд╣реБрд░реВрдкрддрд╛, рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╡рд┐рдзрд┐, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдПрдкреНрд░реЛрдЪ рдореЗрдВ рдореЗрдердб рдХреЙрд▓ рдХреЛ рдбрд┐рд╕реНрдкреИрдЪ рдХрд░рдирд╛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░, рдореЗрдердб рдХреЗ рдирд╛рдо рдФрд░ рдХрдВрдкреНрд▓реАрд╢рди рд╕реНрдЯреЗрдЬ рдкрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд▓рд╛рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдлрд╝рдВрдХреНрд╢рди-рдУрд░рд┐рдПрдВрдЯреЗрдб рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рджреГрд╢реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдирд┐рдпрдо рд╣реЛрддреЗ рд╣реИрдВ ( рдкреЗрдбреЗрдВрдЯ рдиреЛрдЯ : рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╕реА рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рджреГрд╢реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реАрдорд╛рдВрдХрд┐рдд рд╣реИрдВ) рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рджреГрд╢реНрдпрддрд╛ рдкрд░ рдЕрдзрд┐рдХ рдХрдареЛрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдореЙрдбреНрдпреВрд▓, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдХрд▓реНрдк рддрд░реНрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдХреНрдпрд╛ рд╣реИ?


рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдкреНрд░реЛрдЪ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдкрд╖реНрдЯ (рдкрд╛рдпрдерди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдпрд╛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХреЙрд▓ рдХреНрд▓рд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рдж рд╕рднреА рдЙрджрд╛рд╣рд░рдг Kotlin рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ):

class A{ fun doSomething(){ println("    $this") } } 

рдиреЗрд╕реНрдЯреЗрдб рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдХреНрд▓реЛрдЬрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ:

 interface B{ fun doBSomething() } class A{ fun doASomething(){ val b = object: B{ override fun doBSomething(){ println("    $this  ${this@A}") } } b.doBSomething() } } 

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

рдФрд░ рдпрд╣рд╛рдБ рдХреЛрдЯрд▓реАрди рд╣реИ


рдХреЛрдЯрд▓рд┐рди рд╣рдореЗрдВ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ "рдЦрд┐рд▓реМрдирд╛" рджреЗрддрд╛ рд╣реИ - рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛рд░реНрдп ред ( рдкреЗрдбреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдиреЛрдЯ : рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗ рдЗрддрдиреЗ рдирдП рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ C # рдореЗрдВ рднреА рдореМрдЬреВрдж рд╣реИрдВ)ред рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрд╣реАрдВ рднреА рдПред рдПрдбрд╛рд╕реЛрдореЗрд╕реНрдЯрд┐рдВрдЧ () рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдП рдХреЗ рдЕрдВрджрд░ ред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рд░рд┐рд╕реАрд╡рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдП рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

 class A fun A.doASomthing(){ println(" -   $this") } fun main(){ val a = A() a.doASomthing() } 

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

рдХреЛрдЯрд▓рд┐рди рдХреЗ рдкрд╛рд╕ рдЕрдЧрд▓реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬ рд░рд┐рд╕реАрд╡рд░ рдХреЗ рд╕рд╛рде рдХреЛрдб рдмреНрд▓реЙрдХ рд╣реИред рдЖрдк рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рдмреНрд▓реЙрдХ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 class A{ fun doInternalSomething(){} } fun A.doASomthing(){} fun main(){ val a = A() with(a){ doInternalSomething() doASomthing() } } 

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

рд╕рдВрджрд░реНрдн-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ:

 class B class A{ fun B.doBSomething(){} } fun main(){ val a = A() val b = B() with(a){ b.doBSomething() //   } b.doBSomething() //   } 

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

рдкреНрд░рд╕рдВрдЧ-рдЙрдиреНрдореБрдЦ рд╕реНрд╡рднрд╛рд╡


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

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

 val n: Number = 1.0 n + 1.0 //  `plus`     `Number` 

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

 interface NumberOperations{ operator fun Number.plus(other: Number) : Number operator fun Number.minus(other: Number) : Number operator fun Number.times(other: Number) : Number operator fun Number.div(other: Number) : Number } object DoubleOperations: NumberOperations{ override fun Number.plus(other: Number) = this.toDouble() + other.toDouble() override fun Number.minus(other: Number) = this.toDouble() - other.toDouble() override fun Number.times(other: Number) = this.toDouble() * other.toDouble() override fun Number.div(other: Number) = this.toDouble() / other.toDouble() } fun main(){ val n1: Number = 1.0 val n2: Number = 2 val res = with(DoubleOperations){ (n1 + n2)/2 } println(res) } 

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

 fun NumberOperations.calculate(n1: Number, n2: Number) = (n1 + n2)/2 val res = DoubleOperations.calculate(n1, n2) 

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

рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдиреЗрд╕реНрдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 with(a){ with(b){ doSomething() } } 

рдпрд╣ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдкреНрд░рднрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрдИ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ ( KT-10468 ) рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЖрдЬ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рд╕реНрдкрд╖реНрдЯ рдХреЛрд░рдЖрдЙрдЯреНрд╕ рдХреА рд╢рдХреНрддрд┐


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

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд░рдЪрд┐рдд рд╕рдВрдЧрд╛рдорд┐рддрд┐ рд╕рдВрджрд░реНрдн-рдЙрдиреНрдореБрдЦ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ:

 suspend fun CoroutineScope.doSomeWork(){} GlobalScope.launch{ launch{ delay(100) doSomeWork() } } 

рдпрд╣рд╛рдБ, doSomeWork рдПрдХ рд╕рдВрджрд░реНрдн рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд╣рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЙрдиреНрдЪ рд╡рд┐рдзрд┐рдпрд╛рдВ рджреЛ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрджрд░реНрдн рдмрдирд╛рддреА рд╣реИрдВ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛрдиреЛрдВ рд╕рдВрджрд░реНрдн рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд╕рдВрджрд░реНрдн рдмрд╛рд╣рд░реА рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ)ред Kotlin coroutines рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИред

рдбреАрдПрд╕рдПрд▓


рдХреЛрдЯрд▓рд┐рди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реЗрдгреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдбреАрдПрд╕рдПрд▓ (рдбреЛрдореЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛) рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, DSL рдХреЛ рдХреБрдЫ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрд┐рд▓реНрдбрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, DSL рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╣рд╛рдБ рдареАрдХ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореВрд▓ рдХреЛрдЯрд▓рд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЪрд╛рд▓ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ DSL рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рд╕рдВрджрд░реНрдн-рдЙрдиреНрдореБрдЦ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ HTML рддрддреНрд╡ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рддрддреНрд╡ рдХреЛ рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Kotlinx.html рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрджрд░реНрдн-рдЖрдзрд╛рд░рд┐рдд рд╡рд░реНрдЧ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреИрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреВрд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдореМрдЬреВрджрд╛ DOM рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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

 override val root = gridPane{ tabpane { gridpaneConstraints { vhGrow = Priority.ALWAYS } tab("Report", HBox()) { label("Report goes here") } tab("Data", GridPane()) { tableview<Person> { items = persons column("ID", Person::idProperty) column("Name", Person::nameProperty) column("Birthday", Person::birthdayProperty) column("Age", Person::ageProperty).cellFormat { if (it < 18) { style = "-fx-background-color:#8b0000; -fx-text-fill:white" text = it.toString() } else { text = it.toString() } } } } } } 

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

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ: рдПрдХрд╛рдзрд┐рдХ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛


рд╕рдВрджрд░реНрдн-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛрдЯрд▓рд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдХрдИ рдЙрдкрдХрд░рдг рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рдЦреЛрд▓рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдЪрд╛рд╣рд┐рдП? рд╢рд╛рдпрдж рд╣рд╛рдБред

рдлрд┐рд▓рд╣рд╛рд▓, рдПрдХ рд╕рдВрджрд░реНрдн рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕реАрдорд┐рдд рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн-рд╕реАрдорд┐рдд рд╡рд░реНрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рд╕ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рдпрд╣ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдпрд╛ рдЕрдЧрд░ рд╣рдо рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд╛рдпрд░реЗ рдореЗрдВ рд╕реАрдорд┐рдд рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрд░рдЯрд╛рдЗрдирд╕реНрд╕реНрдХреЛрдк рдХреЗ рдЕрдВрджрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЬреЛрдбрд╝реЗрдВ)? рдХреЛрдЯрд▓рд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд┐рдЫрдбрд╝реЗ рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдХрдИ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдИ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ ( KT-10468 ) рдФрд░ KEEP рдЕрдиреБрд░реЛрдз (UPD: рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рд░реА ) рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ (рдпрд╛ рд╢рд╛рдпрдж рдПрдХ рдЪрд┐рдк) рд╣реИ рдХрд┐ рд╡реЗ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ, рддреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд╛рдВрдЫрдиреАрдп рдкреНрд░рдХрд╛рд░ рдХреА рдХрдХреНрд╖рд╛рдПрдВ ( рдЯрд╛рдЗрдк-рдХреНрд▓рд╛рд╕ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрди рджреЛрдиреЛрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛


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

рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ: рдПрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдиреЛрдЬрд╝рд┐рдХ , рдЬреЗрдЯрдмреНрд░реЗрди рд░рд┐рд╕рд░реНрдЪ рдореЗрдВ рдкрд░рдорд╛рдгреБ рднреМрддрд┐рдХреА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛рдУрдВ рдХреЗ рдЙрдк рдкреНрд░рдореБрдЦред

рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд: рдкреЗрдЯреНрд░ рдХреНрд▓реАрдо , рдиреНрдпреВрдХреНрд▓рд┐рдпрд░ рдлрд┐рдЬрд┐рдХреНрд╕ рдХреА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рд╢реЛрдзрдХрд░реНрддрд╛ рдЬреЗрдЯрдмреНрд░реЗрди рдЕрдиреБрд╕рдВрдзрд╛рди рдореЗрдВ

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


All Articles