рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╛рдареНрдпрдХреНрд░рдо
тАЬiOS рдбреЗрд╡рд▓рдкрд░тАЭ рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЕрдиреБрд╡рд╛рдж рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
ред рдЙрдиреНрдирдд рдкрд╛рдареНрдпрдХреНрд░рдо ред
тАЭ рдЕрдЪреНрдЫреА рдкрдврд╛рдИ рд╣реЛред
рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп, рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдмрдВрдзрдХреНрдпрд╛ рд╣реИрдВ рдЬреЗрдирд░рд┐рдХ?
рдЬрдм рд╡реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рдирд╣реАрдВ, рддреЛ рдЖрдк рдЙрдирд╕реЗ рдирдлрд░рдд рдХрд░рддреЗ рд╣реИрдВ!рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рд╣рд░ рдХреЛрдИ рдЬреЗрдирд░рд┐рдХ рдХреА рд╢рдХреНрддрд┐ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ: рд╕реБрдмрд╣ рдЙрдардирд╛, рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдХрд┐ рдХреНрдпрд╛ рдкреАрдирд╛ рд╣реИ, рдПрдХ рдХрдк рднрд░рдирд╛ред
я╕П
рд╕реНрд╡рд┐рдлреНрдЯ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд┐рдд рднрд╛рд╖рд╛ рд╣реИред рдЬрдм рднреА рд╣рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ
Any
рдФрд░
AnyObject
рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВред
Any
рдФрд░
AnyObject
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмрдирд╛ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдмреЗрдореЗрд▓ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЬреЗрдиреЗрд░рд┐рдХ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред
рдЬреЗрдиреЗрд░рд┐рдХ рдХреЛрдб рдЖрдкрдХреЛ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рджреЛрд╣рд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрдореВрд░реНрдд рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
Array
,
Set
рдФрд░
Dictionary
рдЬреИрд╕реЗ рдкреНрд░рдХрд╛рд░ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдирд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рджреЛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдКрдВрдЧрд╛ред
let intArray = [1, 2, 3, 4] let stringArray = [a, b, c, d] func printInts(array: [Int]) { print(intArray.map { $0 }) } func printStrings(array: [String]) { print(stringArray.map { $0 }) }
рдЕрдм рдореБрдЭреЗ рдЯрд╛рдЗрдк рдлреНрд▓реЛрдЯ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рд╕рд░рдгреА рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдВрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЛрдб рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдЬреЗрдирд░рд┐рдХ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕

рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп
рдЬреЗрдиреЗрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди
T
рдХрд┐рд╕реА рднреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ
T
рдЯрд╛рдЗрдк рдирд╛рдо рдХрд╣рддрд╛ рд╣реИ рдХрд┐
рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдПрд░реЗ рдЯрд╛рдЗрдк
рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА
рдХреНрдпрд╛ рд╣реЛред
рдмрдЬрд╛рдп рд╕реНрд╡рдпрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣рд░ рдмрд╛рд░
print(
_:
)
рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
func print<T>(array: [T]) { print(array.map { $0 }) }
рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдпрд╛ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рдмрд╣реБрд░реВрдкрддрд╛
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЬреЗрдиреЗрд░рд┐рдХ рдЯрд╛рдЗрдк T рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред рдЖрдк рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдорд╛ рдХреЛрд╖реНрдардХ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдХреЛрдг рдХреЛрд╖реНрдардХ рдореЗрдВ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рд▓рд┐рдЦрдХрд░ред
рдпрджрд┐ рдЖрдк рдРрд░реЗ рдФрд░ рдбрд┐рдХреНрд╢рдирд░реА <Key, Element> рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЯрд╛рдЗрдк рдкреИрд░рд╛рдореАрдЯрд░, рдЕрд░реНрдерд╛рддреН, рдПрд▓реАрдореЗрдВрдЯ рдФрд░ рдХреА, рдПрд▓реАрдореЗрдВрдЯ, рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЯрд╛рдЗрдк рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдиреЛрдЯ: рд╣рдореЗрд╢рд╛ CamelCase рд╕рдВрдХреЗрддрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
T
рдФрд░
TypeParameter
) рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдо рджреЗрдВ, рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рд╣реИрдВ, рди рдХрд┐ рдорд╛рдиред
рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░
рдпреЗ рдХрд╕реНрдЯрдо рдХрдХреНрд╖рд╛рдПрдВ, рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдФрд░ рдЧрдгрдирд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рд╕рдорд╛рди рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВред
рдЪрд▓реЛ рдПрдХ рд╕реНрдЯреИрдХ рдмрдирд╛рддреЗ рд╣реИрдВ
import Foundation enum StackError: Error { case Empty(message: String) } public struct Stack { var array: [Int] = [] init(capacity: Int) { array.reserveCapacity(capacity) } public mutating func push(element: Int) { array.append(element) } public mutating func pop() -> Int? { return array.popLast() } public func peek() throws -> Int { guard !isEmpty(), let lastElement = array.last else { throw StackError.Empty(message: "Array is empty") } return lastElement } func isEmpty() -> Bool { return array.isEmpty } } extension Stack: CustomStringConvertible { public var description: String { let elements = array.map{ "\($0)" }.joined(separator: "\n") return elements } } var stack = Stack(capacity: 10) stack.push(element: 1) stack.push(element: 2) print(stack) stack.pop() stack.pop() stack.push(element: 5) stack.push(element: 3) stack.push(element: 4) print(stack)
рдЕрдм рдпрд╣ рд╕реНрдЯреИрдХ рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрд╛ рддреЛ рдПрдХ рдФрд░ рд╕реНрдЯреИрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╛ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
enum StackError: Error { case Empty(message: String) } public struct Stack<T> { var array: [T] = [] init(capacity: Int) { array.reserveCapacity(capacity) } public mutating func push(element: T) { array.append(element) } public mutating func pop() -> T? { return array.popLast() } public func peek() throws -> T { guard !isEmpty(), let lastElement = array.last else { throw StackError.Empty(message: "Array is empty") } return lastElement } func isEmpty() -> Bool { return array.isEmpty } } extension Stack: CustomStringConvertible { public var description: String { let elements = array.map{ "\($0)" }.joined(separator: "\n") return elements } } var stack = Stack<Int>(capacity: 10) stack.push(element: 1) stack.push(element: 2) print(stack) var strigStack = Stack<String>(capacity: 10) strigStack.push(element: "aaina") print(strigStack)
рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╕реАрдорд╛рдПрдБ
рдЪреВрдБрдХрд┐ рдЬреЗрдиреЗрд░рд┐рдХ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдХрдИ рдмрд╛рд░ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдмрдВрдз рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрд╡рд┐рдлреНрдЯ
Dictionary
рдкреНрд░рдХрд╛рд░ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреА рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреБрдВрдЬреА рдХреЛ рдЬрд╛рдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрд╕рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рди рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
func someFunction<T: SomeClass, U: SomeProtocol>(someT: T, someU: U) {
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рд╣рдордиреЗ рдЯрд╛рдЗрдк рдЯреА рдХрд╛ рдПрдХ рд╕реНрдЯреИрдХ рдмрдирд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рджреЛ рд╕реНрдЯреИрдХ рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рдХрд╛рд░
Equatable
рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред рд╣рдореЗрдВ
Stack<
T:
Equatable
>
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдЬреЗрдирд░рд┐рдХ? рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
func min<T: Comparable>(_ x: T, _ y: T) -> T { return y < x ? y : x }
рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдлрдВрдХреНрд╢рди рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЪреАрдЬреЛрдВ рдХреА рдХрдореА рд╣реЛрддреА рд╣реИ:
- рдкреНрд░рдХрд╛рд░ рдЯреА рдХреЗ рдЪрд░ рдХреЗ рдЖрдХрд╛рд░;
- рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдзрд┐рднрд╛рд░ рдХреЗ рдкрддреЗ <, рдЬрд┐рд╕реЗ рд░рди рдЯрд╛рдЗрдо рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрдм рднреА рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдорд╛рди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬреЗрдиреЗрд░рд┐рдХ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рди рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рднрдВрдбрд╛рд░рдг рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рд╣реИред рдпрджрд┐ рдореВрд▓реНрдп рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рд╕реНрд╡рд┐рдлреНрдЯ рдЗрд╕реЗ рдвреЗрд░ рдкрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЧрд╡рд╛рд╣ рд╕рд╛рд░рдгреА рдХреА рд╕реВрдЪреА рднреА рд░рдЦрддрд╛ рд╣реИ: рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╡рд╛рд╣ рддрд╛рд▓рд┐рдХрд╛, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╡рд╛рд╣ рддрд╛рд▓рд┐рдХрд╛ред рдЧрд╡рд╛рд╣ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рднрд╛рдЧ рдХрд╛ рдЕрдВрддред рдкрд░рдВрдкрд░рд╛ рд╕реЗ, рд╣рдо рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рдорд┐рддреНрд░реЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рджреВрд╕рд░рд╛ рднрд╛рдЧ