рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдлреНрдЯред рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг

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



рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛



рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ

рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рд╕реНрд╡рд┐рдлреНрдЯ рдХрд╛ рдкрд░рд┐рдЪрдп



рднрд╛рд╖рд╛ рдЧрд╛рдЗрдб

рдореВрд▓ рдмрд╛рддреЗрдВ

рдореВрд▓ рд╕рдВрдЪрд╛рд▓рдХ

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд╡рд░реНрдг

рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдкреНрд░рдХрд╛рд░

рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣

рдХрд╛рд░реНрдп

рдмрдВрдж

enumerations

рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдПрдВ

рдЧреБрдг

рддрд░реАрдХреЗ

рд╕рдмрд╕реНрдХреНрд░рд┐рдкреНрдЯ

рд╡рд┐рд░рд╛рд╕рдд

рдкреНрд░рд╛рд░рдВрдн

Deinitialization

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрджрд░реНрдн рдЧрд┐рдирддреА

рд╡реИрдХрд▓реНрдкрд┐рдХ рдЬрдВрдЬреАрд░

рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдЯрд╛рдЗрдк рдХрд░реЗрдВ

рдиреЗрд╕реНрдЯреЗрдб рдкреНрд░рдХрд╛рд░

рдПрдХреНрд╕рдЯреЗрдВрд╢рди

рдкреНрд░реЛрдЯреЛрдХреЙрд▓

рдЬреЗрдиреЗрд░рд┐рдХреНрд╕

рдЙрдиреНрдирдд рдСрдкрд░реЗрдЯрд░реЛрдВ



рднрд╛рд╖рд╛ рд╕рдВрджрд░реНрдн

рднрд╛рд╖рд╛ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рд▓рдпрд╛рддреНрдордХ рд╕рдВрд░рдЪрдирд╛

рдкреНрд░рдХрд╛рд░

рднрд╛рд╡

рдмрдпрд╛рди

рдШреЛрд╖рдгрд╛рдУрдВ

рдЧреБрдг

рдкреИрдЯрд░реНрдиреНрд╕

рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рддрд░реНрдХ

рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢

рдЯреНрд░реЗрдбрдорд╛рд░реНрдХ



рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ



рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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



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



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



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



рд╕реНрд╡рд┐рдлреНрдЯ рдиреЗ рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд╕рднреА рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ Apple рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рд╕рдВрдХрд▓рдХ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реНрдпрд╛рдп рд╣реИ, рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╣рдорд╛рд░реА рднрд╛рд╖рд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред рдЗрд╕реЗ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ "рд╣реЗрд▓реНрд▓реЛ, рд╡рд░реНрд▓реНрдб!" рдПрдкреНрд▓реАрдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рдкреВрд░реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рднреАред рдпрд╣ рд╕рдм рд╕реНрд╡рд┐рдлреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕реНрд╡рдпрдВ рдПрдкреНрдкрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдХрд░рдг рдмрдирд╛рддрд╛ рд╣реИред



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



рд╕реНрд╡рд┐рдлреНрдЯ рдХрд╛ рдкрд░рд┐рдЪрдп


рдПрдХ рд▓рдВрдмреА рдкрд░рдВрдкрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо тАЬHello, worldтАЭ



рд╢рдмреНрджреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



 println("Hello, world")
      
      





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



рдХрд╛рд░реНрдп рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВред



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



рдЯрд┐рдкреНрдкрдгреА

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


рд╕рд░рд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░


рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдФрд░ var



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



 var myVariable = 42 myVariable = 50 let myConstant = 42
      
      





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



рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред



рдпрджрд┐ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдЧрд╛рдпрдм рд╣реИ рдпрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЪрд░ рдХреЗ рдмрд╛рдж рдЦреБрдж рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдирд╛рдо рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 let implicitInteger = 70 let inplicitDouble = 70.0 let inplicitDouble: Double = 70
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдлрд╝реНрд▓реЛрдЯ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдирдВрдмрд░ 4 рд╕реЗ рдЖрд░рдВрдн рдХрд░реЗрдВред


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

 let label = "The width is " let width = 94 let widthLabel = label + String(width)
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЖрдкрдХреЛ рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ?


рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ: рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдмреИрдХрд╕реНрд▓реИрд╢ ( \



) рдбрд╛рд▓реЗрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:



 let apples = 3 let oranges = 5 let appleSummary = "I have \(apples) apples." let fruitSummary = "I have \(apples + oranges) pieces of fruit."
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

\()



рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдЪрд░ рдФрд░ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдирд╛рдо рдХрд╛ рдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред


рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ (рд╢рдмреНрджрдХреЛрд╢реЛрдВ, рд╢рдмреНрджрдХреЛрд╢) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ ( []



) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



 var shoppingList = ["catfish", "water", "tulips", "blue paint"] shoppingList[1] = "bottle of water" var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic", ] occupations["Jayne"] = "Public Relations"
      
      





рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдпрд╛ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:



 let emptyArray = String[]() let emptyDictionary = Dictionary<String, Float>()
      
      





рдЦрд╛рд▓реА рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП [:]



рдХреНрд░рдорд╢рдГ []



рдФрд░ [:]



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



 shoppingList = [] // Went shopping and bought everything.
      
      







рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдФрд░ рдЪрдХреНрд░


if



рдФрд░ switch



рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ, while



рдФрд░ do-while



switch



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



 let individualScores = [75, 43, 103, 87, 12] var teamScore = 0 for score in individualScores { if score > 50 { teamScore += 3 } else { teamScore += 1 } } teamScore
      
      





if



рдЕрдВрджрд░ рдХреА рд╕реНрдерд┐рддрд┐ рддрд╛рд░реНрдХрд┐рдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, if score {тАж}



рдЗрд╕рдХрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ if score {тАж}



рдЧрд▓рдд рд╣реИ, if score {тАж}



рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЧрд▓рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддреБрд▓рдирд╛ рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде)ред



рд╕рд╢рд░реНрдд if



рдХреЛ var



рдФрд░ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП let



рдФрд░ var



рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ nil



рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдЪрд░ рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рд╡реЗ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ nil



)ред рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪрд░ рдпрд╛ рд╕реНрдерд┐рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди ( ?



) рдЬреЛрдбрд╝реЗрдВред



  var optionalString: String? = "Hello" optionalString == nil var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = optionalName { greeting = "Hello, \(name)" }
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

optionalName



рдХреЛ nil



рдмрджрд▓реЗрдВред рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рдЬрдм optionalName



nil



рд╣реЛ рддреЛ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ else



рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝реЗрдВред


рдпрджрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рдореВрд▓реНрдп nil



, рддреЛ рд╕реНрдерд┐рддрд┐ рдЧрд▓рдд рд╣реЛрдЧреА рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдиреНрдпрдерд╛, greeting



рдЪрд░ рдХреЛ рдПрдХ рдирдпрд╛ рдорд╛рди рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред



рдПрдХрд╛рдзрд┐рдХ рдкрд╕рдВрдж switch



рдСрдкрд░реЗрдЯрд░ рдЕрдкрдиреЗ рднреАрддрд░ рдХрдИ рдЕрдиреНрдп рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░рд▓ рддреБрд▓рдирд╛ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ:



 let vegetable = "red pepper" switch vegetable { case "celery": let vegetableComment = "Add some raisins and make ants on a log." case "cucumber", "watercress": let vegetableComment = "That would make a good tea sandwich." case let x where x.hasSuffix("pepper"): let vegetableComment = "Is it a spicy \(x)?" default: let vegetableComment = "Everything tastes good in soup." }
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЖрдкрдХреЛ рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ?


рдХреЛрдб рдХреЗ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдмреНрд▓реЙрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд░реНрддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд┐рдП рдмрд┐рдирд╛ switch



рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ case



рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ break



рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред



рдПрдХ рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА-рдорд╛рди рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рдирд╛рдо рдЬреЛрдбрд╝реА рдХреЗ рд╕рд╛рде for-in



рд╕рд╛рде рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



 let interestingNumbers = [ "Prime": [2, 3, 5, 7, 11, 13], "Fibonacci": [1, 1, 2, 3, 5, 8], "Square": [1, 4, 9, 16, 25], ] var largest = 0 for (kind, numbers) in interestingNumbers { for number in numbers { if number > largest { largest = number } } } largest
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдПрдХ рдФрд░ рд╡реИрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрддрдо рддреАрди рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рдирдВрдмрд░ рдХрд┐рд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ


while



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



 var n = 2 while n < 100 { n = n * 2 } n var m = 2 do { m = m * 2 } while m < 100 m
      
      





рджреЛ рдмрд┐рдВрджреБрдУрдВ ( ..



) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдпрд╛ рдПрдХ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░, рдХрдВрдбреАрд╢рди рдФрд░ рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ for



рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ for



рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреЗрдЦрд┐рдП, рдпреЗ рджреЛрдиреЛрдВ рдЪрдХреНрд░ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:



 var firstForLoop = 0 for i in 0..3 { firstForLoop += i } firstForLoop var secondForLoop = 0 for var i = 0; i < 3; ++i { secondForLoop += 1 } secondForLoop
      
      





рд▓реВрдк рдмрдирд╛рддреЗ рд╕рдордп, рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ( ..



) рдпрджрд┐ рдЖрдк рд░реЗрдВрдЬ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рддреАрди рдмрд┐рдВрджреБрдУрдВ ( тАж



) рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдФрд░ рдмрдбрд╝рд╛ рдорд╛рди рджреЛрдиреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред



рдХрд╛рд░реНрдп рдФрд░ рдмрдВрджред


рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП func



рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕рдХреЗ рдирд╛рдо рдФрд░ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рддрд░реНрдХреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ->



рд╕рд╛рдеред



 func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)." } greet("Bob", "Tuesday")
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

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


рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдХрдИ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЯрдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:



 func getGasPrices() -> (Double, Double, Double) { return (3.59, 3.69, 3.79) } getGasPrices()
      
      





рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдЦреНрдпрд╛рдПрдБ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:



 func sumOf(numbers: Int...) -> Int { var sum = 0 for number in numbers { sum += number } return sum } sumOf() sumOf(42, 597, 12)
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдВрдХрдЧрдгрд┐рдд рдорд╛рдзреНрдп рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


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



 func returnFifteen() -> Int { var y = 10 func add() { y += 5 } add() return y } returnFifteen()
      
      





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



 func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne } var increment = makeIncrementer() increment(7)
      
      





рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреА рдЙрд╕рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред



 func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool { for item in list { if condition(item) { return true } } return false } func lessThanTen(number: Int) -> Bool { return number < 10 } var numbers = [20, 19, 7, 12] hasAnyMatches(numbers, lessThanTen)
      
      





рдХрд╛рд░реНрдп рдмрдВрдж рд╣реЛрдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдХрд░реАрдмреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд░реАрдмреА рдмреНрд░реЗрд╕рд┐рдЬрд╝ ( {}



) рдХреЗ рд╕рд╛рде рдмрдВрдж рд╢рд░реАрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд▓реЛрдЬрд░ рдХреЗ рд╢рд░реАрд░ рд╕реЗ рддрд░реНрдХ рдФрд░ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдкрд░реЗрдЯрд░ in



рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



 numbers.map({ (number: Int) -> Int in let result = 3 * number return result })
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдХреНрд▓реЛрдЬрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рд▓реМрдЯрд╛рдПред


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



 numbers.map({ number in 3 * number })
      
      





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



 sort([1, 5, 3, 12, 2]) { $0 > $1 }
      
      







рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ


рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж class



рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХрдХреНрд╖рд╛ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдЪрд░ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдХреНрд╖рд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



 class Shape { var numberOfSides = 0 func simpleDescription() -> String { return "A shape with \(numberOfSides) sides." } }
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдПрдХ рд╡рд░реНрдЧ рд╕рджрд╕реНрдп рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдПрдХ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИред


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



 var shape = Shape() shape.numberOfSides = 7 var shapeDescription = shape.simpleDescription()
      
      





рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдпрд╛рдж рдХрд┐рдпрд╛ - рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░, init



рд╡рд┐рдзрд┐ред



 class NamedShape { var numberOfSides: Int = 0 var name: String init(name: String) { self.name = name } func simpleDescription() -> String { return "A shape with \(numberOfSides) sides." } }
      
      





рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд╛рдо рд╡рд░реНрдЧ рдХрд╛ рд╕рджрд╕реНрдп, self



рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП self



рддрд░реНрдХ рд╕реЗ name



рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдореЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдХреНрд╖рд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдп рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╛ рддреЛ рдШреЛрд╖рдгрд╛ рдХреЗ рджреМрд░рд╛рди (рдЬреИрд╕реЗ рдХрд┐ numberOfSides



) рдпрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ ( name



рд░реВрдк рдореЗрдВ)ред



рд╡рд░реНрдЧ рд╡рд┐рдзреНрд╡рдВрд╕рдХ deinit



рд╡рд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдПрдХ рдореМрдЬреВрджрд╛ рдХрдХреНрд╖рд╛ рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдЪреНрдЪреЗ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдирд╛рдо рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВред рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ, рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рд╡рд░реНрдЧ рдХреА рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд░рд╛рд╕рдд рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред



рдмрд╛рд▓ рд╡рд░реНрдЧ override



рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреАрд╡рд░реНрдб override



рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рдмрд┐рдирд╛ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдХрдВрдкрд╛рдЗрд▓рд░ override



рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рднреА рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

 class Square: NamedShape { var sideLength: Double init(sideLength: Double, name: String) { self.sideLength = sideLength super.init(name: name) numberOfSides = 4 } func area() -> Double { return sideLength * sideLength } override func simpleDescription() -> String { return "A square with sides of length \(sideLength)." } } let test = Square(sideLength: 5.2, name: "my test square") test.area() test.simpleDescription()
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

Circle



рд╡рд░реНрдЧ рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕реЗ NamedShape



рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ NamedShape



ред Circle



рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рддрд╛ рджреЛ рддрд░реНрдХ - рддреНрд░рд┐рдЬреНрдпрд╛ рдФрд░ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИред area



рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ describe



рдХрд░реЗрдВред


рдХрдХреНрд╖рд╛ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ getter



рдФрд░ setter



рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



 class EquilateralTriangle: NamedShape { var sideLength: Double = 0.0 init(sideLength: Double, name: String) { self.sideLength = sideLength super.init(name: name) numberOfSides = 3 } var perimeter: Double { get { return 3.0 * sideLength } set { sideLength = newValue / 3.0 } } override func simpleDescription() -> String { return "An equilateral triagle with sides of length \(sideLength)." } } var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle") triangle.perimeter triangle.perimeter = 9.9 triangle.sideLength
      
      





perimeter



рдХреЗ setter



рдЪрд░ рдореЗрдВ perimeter



рдирдП рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдорд╛рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ newValue



рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдЪрд░ рдХрд╛ рдирд╛рдо set



рддреБрд░рдВрдд рдмрд╛рдж рдХреЛрд╖реНрдардХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред



EquilateralTriangle



рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рддреАрди рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  1. рдмрд╛рд▓ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг;
  2. рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдмреБрд▓рд╛ рд░рд╣рд╛ рд╣реИ;
  3. рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ред


рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдирдпрд╛ рдорд╛рди рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдХреБрдЫ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ willSet



рдФрд░ didSet



рд╡рд┐рдзрд┐рдпреЛрдВ willSet



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



 class TriangleAndSquare { var triangle: EquilateralTriangle { willSet { square.sideLength = newValue.sideLength } } var square: Square { willSet { triangle.sideLength = newValue.sideLength } } init(size: Double, name: String) { square = Square(sideLength: size, name: name) triangle = EquilateralTriangle(sideLength: size, name: name) } } var triangleAndSquare = TriangleAndSquare(size: 10, name: "another test shape") triangleAndSquare.square.sideLength triangleAndSquare.triangle.sideLength triangleAndSquare.square = Square(sideLength: 50, name: "larger square") triangleAndSquare.triangle.sideLength
      
      





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



) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред



 class Counter { var count: Int = 0 func incrementBy(amount: Int, numberOfTimes times: Int) { count += amount * times } } var counter = Counter() counter.incrementBy(2, numberOfTimes: 7)
      
      





рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рддрд░реАрдХреЛрдВ, рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди ( ?



) рдЬреЛрдбрд╝реЗрдВред рдпрджрд┐ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рдкрд╣рд▓реЗ рдорд╛рди nil



, рддреЛ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ ( ?



) рдЕрдирджреЗрдЦрд╛ рд╣реИ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп nil



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



 let optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square") let sideLength = optionalSquare?.sideLength
      
      







рдЧрдгрдирд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдПрдВ


Enumerations рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП enum



keyword рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред



 enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpleDescription() -> String { switch self { case .Ace: return "ace" case .Jack: return "jack" case .Queen: return "queen" case .King: return "king" default: return String(self.toRaw()) } } } let ace = Rank.Ace let aceRawValue = ace.toRaw()
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЙрдирдХреЗ рдорд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ 2 Rank



рдЧрдгрдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред


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



рдореВрд▓ рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, toRaw



рдФрд░ fromRaw



рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



 if let convertedRank = Rank.fromRaw(3) { let threeDescription = convertedRank.simpleDescription() }
      
      





рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЧрдгрдирд╛ рддрддреНрд╡реЛрдВ рдХреЗ рдореВрд▓реНрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИрдВ, рди рдХрд┐ рдЙрдирдХреЗ рдореВрд▓ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдФрд░ рд░рд┐рдХреЙрд░реНрдбред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдЖрдк рдЙрдирдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред



 enum Suit { case Spades, Hearts, Diamonds, Clubs func simpleDescription() -> String { switch self { case .Spades: return "spades" case .Hearts: return "hearts" case .Diamonds: return "diamonds" case .Clubs: return "clubs" } } } let hearts = Suit.Hearts let heartsDescription = hearts.simpleDescription()
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдПрдХ Color



рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ Spades



рдФрд░ Clubs



рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ тАЬblackтАЭ



рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ Hearts



рдФрд░ Diamonds



рд▓рд┐рдП тАЬredтАЭ



ред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Suit



рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЗ Hearts



рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм hearts



рд╕реНрдерд┐рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреВрд░рд╛ рдирд╛рдо Suit.Hearts



, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ switch



рд╣рдо рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред .Hearts



, рдЪреВрдВрдХрд┐ self



рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рдХрд╛рд░ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЬреНрдЮрд╛рдд рд╣реИред рдпрджрд┐ рдЪрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╣рд░ рдЬрдЧрд╣ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



struct



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



 struct Card { var rank: Rank var suit: Suit func simpleDescription() -> String { return "The \(rank.simpleDescription()) of \(suit.simpleDescription())" } } let threeOfSpades = Card(rank: .Three, suit: .Spades) let threeOfSpadesDescription = threeOfSpades.simpleDescription()
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдХрд╛рд░реНрдб рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдХрд╛рд░реНрдб рдХрд╛ рдПрдХ рдкреВрд░реНрдг рдбреЗрдХ рдмрдирд╛рддрд╛ рд╣реИред


рдПрдХ рдЧрдгрди рд╕рджрд╕реНрдп рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдкрдиреЗ рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЧрдгрдирд╛ рдореВрд▓реНрдпреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд┐рд░рдВрддрд░ success



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



рд╕рд░реНрд╡рд░ рд╕реЗ рд╕реВрд░реНрдпреЛрджрдп рдФрд░ рд╕реВрд░реНрдпрд╛рд╕реНрдд рдХреЗ рд╕рдордп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред



 enum ServerResponse { case Result(String, String) case Error(String) } let success = ServerResponse.Result("6:00 am", "8:09 pm") let failure = ServerResponse.Error("Out of cheese.") switch success { case let .Result(sunrise, sunset): let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)." case let .Error(error): let serverResponse = "Failure... \(error)" }
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рддреАрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ switch



рдХрд░рдиреЗ рдХреЗ switch



рдХрдИ рд╡рд┐рдХрд▓реНрдк рдЪреБрдиреЗрдВ


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреИрд╕реЗ рд╕реВрд░реНрдпреЛрджрдп рдФрд░ рд╕реВрд░реНрдпрд╛рд╕реНрдд рдХрд╛ рд╕рдордп ServerResponse



рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред


рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



 protocol ExampleProtocol { var simpleDescription: String { get } mutating func adjust() }
      
      





рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдХреНрд╖рд╛рдУрдВ, рдЧрдгрдирд╛, рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред



 class SimpleClass: ExampleProtocol { var simpleDescription: String = "A very simple class." var anotherProperty: Int = 69105 func adjust() { simpleDescription += " Now 100% adjusted." } } var a = SimpleClass() a.adjust() let aDescription = a.simpleDescription struct SimpleStructure: ExampleProtocol { var simpleDescription: String = "A simple structure" mutating func adjust() { simpleDescription += " (adjusted)" } } var b = SimpleStructure() b.adjust() let bDescription = b.simpleDescription
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдПрдХ рдЧрдгрдирд╛ рдмрдирд╛рдПрдВ рдЬреЛ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред


SimpleStructure



рд╕рдВрд░рдЪрдирд╛ SimpleStructure



рдореЗрдВ SimpleStructure



рдХреАрд╡рд░реНрдб рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдзреАрди рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, SimpleClass



рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ SimpleClass



рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд SimpleClass



рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЗ рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдмрд┐рдирд╛ рдмрджрд▓реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред



рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдирдП рддрд░реАрдХреЗ рдпрд╛ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ - рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП extensions



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



 extension Int: ExampleProtocol { var simpleDescription: String { return "The number \(self)" } mutating func adjust() { self += 42 } } 7.simpleDescription
      
      





рдЪрд▓реЛ рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕рджрд╕реНрдп рдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ

рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдмрдирд╛рдПрдБ редDouble



absoluteValue





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



 let protocolValue: ExampleProtocol = a protocolValue.simpleDescription // protocolValue.anotherProperty // Uncomment to see the error
      
      





рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЪрд░ protocolValue



рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ SimpleClass



, рд╕рдВрдХрд▓рдХ рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдорд╛рдирддрд╛ рд╣реИ ExampleProtocol



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



ред



рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░


рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдг рдХреЛрд╖реНрдардХ ( <>



) рдореЗрдВ рдирд╛рдо рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ ред



 func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] { var result = ItemType[]() for i in 0..times { result += item } return result } repeat("knock", 4)
      
      





рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп, рдХрдХреНрд╖рд╛рдПрдВ, рдЧрдгрдирд╛, рдФрд░ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдмрдирд╛рдПрдВред



 // Reimplement the Swift standard library's optional type enum OptionalValue<T> { case None case Some(T) } var possibleInteger: OptionalValue<Int> = .None possibleInteger = .Some(100)
      
      





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



ред



 func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs: U) -> Bool { for lhsItem in lhs { for rhsItem in rhs { if lhsItem == rhsItem { return true } } } return false } anyCommonElements([1, 2, 3], [3])
      
      





рдЖрдЗрдП рдкреНрд░рдпреЛрдЧ

рдХрд░реЗрдВред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ anyCommonElements



рддрд╛рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рдПред


рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк where



рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рдмрд╛рдж рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрд╛ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ ред рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ <T: Equatable>



рдмрд░рд╛рдмрд░ рд╣реИ <T where T: Equatable>



ред



10 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ iOS рдРрдк рдореЗрдВ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? Apphud рдХреЛ рдПрдХреАрдХреГрдд рдХрд░реЗрдВ рдФрд░:

- рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦрд░реАрджрд╛рд░реА рдХрд░реЗрдВ;

- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ;

- рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдПрдХреАрдХреГрдд;

- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрдерд╛рдиреАрдп рдореБрджреНрд░рд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕рджрд╕реНрдпрддрд╛ рдШрдЯрдирд╛рдУрдВ, рдорд┐рдХреНрд╕рдкреИрдиреЗрд▓, рд╕реНрд▓реИрдХ рдФрд░ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЛ рднреЗрдЬреЗрдВ;

- рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдордВрдерди рджрд░ рдХреЛ рдХрдо рдХрд░реЗрдВ рдФрд░ рдмрд┐рдирд╛ рд╕рджрд╕реНрдпрддрд╛ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд▓реМрдЯрд╛рдПрдВред



All Articles