Swift-style-guide: рдХрд╛рд░реНрдп рдмрдирд╛рдо рддрд░реАрдХреЗ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬреБрд▓ре░ 2015  ┬╖  26рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: raywenderlich/swift-style-guide

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

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

рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдЬреИрд╕реЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд░рд╛рдп рд╣реИ:

рддрд░реАрдХреЗ рдмрдирд╛рдо рдирд┐: рд╢реБрд▓реНрдХ рдХрд╛рд░реНрдп

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

рдкрд╕рдВрджреАрджрд╛

let sorted = items.mergeSort()  // easily discoverable
rocket.launch()  // a mutating method

рдкрд╕рдВрджреАрджрд╛ рдирд╣реАрдВ

let sorted = mergeSort(items)
launch(&rocket)

рдлреНрд░реА рдлрдВрдХреНрд╢рди рдПрдХреНрд╕реЗрдкреНрд╢рди

let tuples = zip(a, b)  // feels natural as a free function (symmetry)
let value = max(x,y,z)  // another free function that feels natural

рд╕рднреА 26 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ "рдлреНрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рднреА рджреЗрдЦреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдореБрдХреНрдд" рдХрд╛ рдЕрд░реНрде рд╣реИ, "рдХрд┐рд╕реА рд╡рд╕реНрддреБ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ"ред

рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЯрд╛рдЗрдк рдФрд░ рдЧреНрд▓реЛрдмрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдХреЛрдк рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдореИрдВрдиреЗ рдЕрднреА рдорд╛рдирд╛ рд╣реИ рдХрд┐ Objective-C рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдм functiona рдореЗрдВ Swift рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд╝реЛрд░рдо, рдмреНрд▓реЙрдЧ, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрджрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рднреА рд╕рд╛рдордЧреНрд░реА рдкрдврд╝реА рд╣реИ, рдЙрд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ functions рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдпрд╛ рдПрдирдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдВред

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

raywenderlich.com рдкрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднреА рдпрд╣рд╛рдВ рдРрдкреНрдкрд▓ рдХреЗ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рднреА рдлрдВрдХреНрд╢рди рдФрд░ рдореЗрдердб рджреЛрдиреЛрдВ рд╣реИрдВ; рд╕рдм рдХреБрдЫ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ

@micpringle рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд╕рдо рдЦрд╛рддрд╛ рд╣реВрдБ рдХрд┐ рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдкрдврд╝реА рд╣реИ рдЬрд╣рд╛рдБ рд╡реЗ рдЗрд╕реЗ function рднрд▓реЗ рд╣реА рдпрд╣ рдПрдХ рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ function рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

"рдиреЗрд╕реНрдЯреЗрдб рд╡рд┐рдзрд┐рдпреЛрдВ" рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ "funcs" рд╣реИрдВ?
рдХреНрд▓реЛрдЬрд░ рдпрд╛ рдЕрдиреНрдп рдЧреИрд░-рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдЕрдВрджрд░ funcs рдХреНрдпрд╛ рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВ?

struct Struct {
   let closure = {
      func whoAmI() {}
   }

   var any: Any? {
      func jeanValjean() {}
      return nil
   }
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░реНрдпреЛрдВ (рдЖрдИрдПрдордУ) рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╡реЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ "рд╕рдВрдмрдВрдзрд┐рдд" рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╡реЗ рдХреЗрд╡рд▓ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рджрд╛рдпрд░реЗ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ "рдЧреБрдордирд╛рдо рдлрд╝рдВрдХреНрд╢рди" рдпрд╣рд╛рдВ рд╕рд╣реА рдирд╛рдо рд╣реИ - рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдХреНрд▓реЛрдЬрд░ рдХреЛ рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред :]

рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдХреЙрдкреНрдб рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрддрд╛ред

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

рдФрд░ рдпрджреНрдпрдкрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдо рд╡рд╛рд▓реЗ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЙрдиреНрд╣реЗрдВ "рдЕрдирд╛рдо" рдмрдирд╛рддреЗ рд╣реИрдВ, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдЕрдирд╛рдо" рдХреНрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рдмрдВрдж рд╣реЛрдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╛рд▓реЗ, рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд░рд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВред рдореИрдВ рдпрд╣ рдорд╛рдирдиреЗ рдХреА рдУрд░ рдЭреБрдХ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреБрдордирд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛ рдмрдВрдж рдЗрд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рд░рд╛рдЬреНрдп, рдЙрд╕рдХрд╛ рдирд╛рдо рд╣реИред рдЗрд╕ рддрд░рд╣ рдЗрд╕реЗ рд╕реА # рдХреЗ рд▓рд┐рдП рдкрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд▓реИрдореНрдмреНрдбрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЙрд░реНрдЯреЗрдВрдб рд╣реИред
https://msdn.microsoft.com/en-us/library/system.delegate (v=vs.110).aspx

func nonymous() {
   func nonymous() {}
}

let anonymouses: [() -> ()] = [].map
{$0} // This "transform" is also anonymous.

let unlcearToMeWhetherNonymous = {}

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

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

рдЗрд╕ рдЬреИрд╕реЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд░рд╛рдп рд╣реИ:

рддрд░реАрдХреЗ рдмрдирд╛рдо рдирд┐: рд╢реБрд▓реНрдХ рдХрд╛рд░реНрдп

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

рдкрд╕рдВрджреАрджрд╛

let sorted = items.mergeSort()  // easily discoverable
rocket.launch()  // a mutating method

рдкрд╕рдВрджреАрджрд╛ рдирд╣реАрдВ

let sorted = mergeSort(items)
launch(&rocket)

рдлреНрд░реА рдлрдВрдХреНрд╢рди рдПрдХреНрд╕реЗрдкреНрд╢рди

let tuples = zip(a, b)  // feels natural as a free function (symmetry)
let value = max(x,y,z)  // another free function that feels natural

рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ,

рдлреНрд░реА рдлрдВрдХреНрд╢рди рдПрдХреНрд╕реЗрдкреНрд╢рди

let tuples = zip(a, b)  // feels natural as a free function (symmetry)
let value = max(x,y,z)  // another free function that feels natural

"рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ" рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИред

рдХреНрдпрд╛ рд╣рдо рдпрд╣рд╛рдВ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рд╕рд╛рде рд╣реА, zip рдФрд░ max рджреЛрдиреЛрдВ рднреА // hard to discover рдореБрджреНрджреЗ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реЛрдВрдЧреЗ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдкреАрдЖрд░ рдореЗрдВ рд▓рд╛рдпрд╛ рдерд╛ред

рдЖрдИрдПрдордПрдЪрдУ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ zip рдПрдХ рдЕрдЬреАрдм рдЙрджрд╛рд╣рд░рдг рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:

  • рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _рдХрд░ рд░рд╣рд╛ рд╣реИ_ рдХреНрдпрд╛ рд╣реИ? a рдФрд░ b рд╕рдВрдпреЛрдЬрди? рдХрд┐рд╕реА рднреА рддрд░рд╣ a рдФрд░ b рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдирд╛? рдХреБрдЫ рдФрд░? рдЕрдзрд┐рдХ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рдЬрд╛рдирдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдХреЗ рдмрдЬрд╛рдп

рдирд┐: рд╢реБрд▓реНрдХ рдХрд╛рд░реНрдп рдХрдо рдЖрдо рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдСрдкрд░реЗрд╢рди рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рд╣реИ?

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

рдирд┐: рд╢реБрд▓реНрдХ рдлрд╝рдВрдХреНрд╢рди рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕рдВрдмрджреНрдз рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдореИрдВ Free Function Exceptions рдкрд░ рдФрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд░рд╣рд╛ рд╣реВрдВред

рдЦреИрд░, рдпрд╣ рдПрдХ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдорд╛рд░реЛрд╣ рд╣реИред рдЖрд░, рдкрд╛рдпрдерди, рд╕реА #, рд╕реА ++ рдЬреИрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред (рдмреВрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред

рдЦреИрд░, рдпрд╣ рдПрдХ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдорд╛рд░реЛрд╣ рд╣реИред

рд╕рдЪ рдореЗрдВ? рдореИрдВрдиреЗ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ... *рд╢рд░реНрдорд┐рдВрджрд╛*

рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛... рдЕрдЧрд░ рдЗрд╕реЗ рдЖрдИрдУрдПрд╕ рдкрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛/рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдореЗрд░реА рдЪрд┐рдВрддрд╛ рдпрд╣рд╛рдВ рдЧрд▓рдд рд╣реИ ...

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

RW рд╕реНрд╡рд┐рдлреНрдЯ рдЯреАрдо рдХрд╛ рдПрдХ рдЪрд╛рд░реНрдЯрд░ рд╣реИ рдЬреЛ iOS рд╕реЗ рдмрдбрд╝рд╛ (рдпрд╛ рдЫреЛрдЯрд╛) рд╣реИред

рд╕рдЪред ;]

рдЬрд╝рд┐рдк рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реВрдВред рдореИрдВ

рдпрд╣рд╛рдВ рдореЗрд░реЗ рд╕реНрд╡рд┐рдлреНрдЯ-рдиреМрд╕рд┐рдЦрд┐рдпрд╛-рдХреНрд╖рдг рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдпрд╛рдЪрдирд╛ред рдореИрдВ

рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдорджрдж рдХ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред BTW, рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХреНрд░реЗрдбрд┐рдЯ рдореЗрдВ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕реЗ рднреА рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред

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

рдореИрдХреНрд╕

let max = Swift.max(0, 1, 2)
let maxElement = [0, 1, 2].maxElement()!

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

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

рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ, zip рд╡рд╣реА рдЪреАрдЬ рд╣реИ рдЬреЛ Zip2Sequence рд▓рд┐рдП рдЗрд╕ рдкреНрд░рд╛рд░рдВрднрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рдЗрдирдкреБрдЯ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЬрд╝рд┐рдкреНрдб рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реЛрдиреЗ рддрдХ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рдареАрдХ рд╣реИред

zip([1...3], ["a"..."c"])
Zip2Sequence([1...3], ["a"..."c"])

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

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

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

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

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

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @ рдЬреЗрд╕реА-!

рдХреБрдЫ рдиреЛрдЯ:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ maxElement() рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдУ (1) рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдУ (1) рдирд╣реАрдВ рд╣реИ рддреЛ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред (рдЖрд░рдбрдмреНрд▓реНрдпреВ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд▓рд╛рд╕рд┐рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдХреЛрдб рдЦреБрд▓реЗ рдореЗрдВ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдпрд╛ рд╕реНрдЯрд╛рдЗрд▓ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред)

рджреВрд╕рд░реА рдУрд░ max<T: Comparable> рдХреБрдЫ рд░реВрдк O(1) рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖реАрдХреГрдд рд╣реЛрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред (рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡рд┐рд╡рд┐рдз рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХреА рд╣реИред)

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдореБрдлреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдореИрдВ _never_ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╡рд╛рдкрд╕ рдзрдХреНрдХрд╛ рджреВрдВрдЧрд╛ред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЖрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ zip рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред рдХреНрдпрд╛ @ рдЬреЗрдЖрд░рдЬреА-рдбреЗрд╡рд▓рдкрд░ рд░реАрд╡рд░реНрдбрд┐рдВрдЧ рдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЙрдбреНрдпреВрд▓реЛ рдЗрд╕ рд░реАрд╡рд░реНрдбрд┐рдВрдЧ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдЖрдкрддреНрддрд┐рдпрд╛рдВ рд╣реИрдВ?

рдмреЗрдЭрд┐рдЭрдХ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдФрд░ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред (рдЕрджреНрдпрддрди рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рд▓рдпред)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

WingYn picture WingYn  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sima-11 picture sima-11  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

grosch picture grosch  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hollance picture hollance  ┬╖  28рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fabienwarniez picture fabienwarniez  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ