Advertisement
DrBoat

Untitled

Jul 7th, 2020
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 3.23 KB | None | 0 0
  1. import Foundation
  2.  
  3. protocol HasSquare {
  4.     func getSquare() -> Double
  5. }
  6.  
  7. protocol HasPerimeter {
  8.     func getPerimeter() -> Double
  9. }
  10.  
  11. protocol DefaultShape: HasSquare, HasPerimeter { }
  12.  
  13. class Triangle: HasPerimeter {
  14.     public var a: Double?
  15.     private var b: Double?
  16.     private var c: Double?
  17.     private var perimeter: Double?
  18.    
  19.     init() {}
  20.    
  21.     init(a: Double) {
  22.         self.a = a
  23.         self.b = a
  24.         self.c = a
  25.         self.perimeter = 3*a
  26.     }
  27.    
  28.     init(a: Double, b: Double, c: Double) {
  29.         self.a = a
  30.         self.b = b
  31.         self.c = c
  32.         self.perimeter = a + b + c
  33.     }
  34.    
  35.     func change(a: Double) {
  36.         self.a = a
  37.         if let b = self.b,
  38.            let c = self.c {
  39.             self.perimeter = a + b + c
  40.         } else {
  41.             self.perimeter = -1
  42.         }
  43.     }
  44.    
  45.     func change(b: Double) {
  46.         self.b = b
  47.         guard let a = self.a,
  48.               let c = self.c else {
  49.             self.perimeter = -1
  50.             return
  51.         }
  52.         self.perimeter = a + b + c
  53.     }
  54.    
  55.     func change(c: Double) {
  56.         self.c = c
  57.         self.perimeter = self.a! + self.b! + self.c! //так делать нельзя
  58.     }
  59.    
  60.     func getPerimeter() -> Double {
  61.         return perimeter ?? -1 //стандарное значение
  62.     }
  63.    
  64. }
  65.  
  66.  
  67.  
  68. var myTriangle: Triangle = Triangle()
  69. myTriangle.change(a: 3)
  70. myTriangle.change(b: 4)
  71. myTriangle.change(c: 5)
  72. print(myTriangle.getPerimeter())
  73.  
  74. class Circle: DefaultShape {
  75.     var a: Double
  76.     private let r:Double
  77.    
  78.     init(radius: Double) {
  79.         self.r = radius
  80.         self.a = 10
  81.     }
  82.    
  83.     func getSquare() -> Double {
  84.         return Double.pi * r * r
  85.     }
  86.    
  87.     func getPerimeter() -> Double {
  88.         return 2 * Double.pi * r
  89.     }
  90. }
  91.  
  92. var circle = Circle(radius: 5)
  93.  
  94. class Rectangle: DefaultShape {
  95.     private var a: Double
  96.     private var b: Double
  97.    
  98.     init(_ a: Double, _ b: Double) {
  99.         self.a = a
  100.         self.b = b
  101.     }
  102.    
  103.     func getSquare() -> Double {
  104.         return a * b
  105.     }
  106.    
  107.     func getPerimeter() -> Double {
  108.         return 2 * (a + b)
  109.     }
  110. }
  111.  
  112. class Square: Rectangle {
  113.     init(_ a: Double) {
  114.         super.init(a, a)
  115.     }
  116. }
  117.  
  118. let pam: Any? = String(40)
  119. if let unwrappedPam = pam as? String {
  120.     print(unwrappedPam)
  121. }
  122.  
  123.  
  124. let square: DefaultShape = Square(10)
  125. if let squareToo = square as? Rectangle {
  126.     print(squareToo.getPerimeter())
  127. }
  128. print(square.getSquare())
  129.  
  130.  
  131. func reverse(string: String) -> String {
  132.     return String(string.reversed())
  133. }
  134.  
  135. //let myFunc: (_ string: String) -> String
  136.  
  137. class PairDouble {
  138.     var a: Double
  139.     var b: Double
  140.    
  141.     init(a: Double, b: Double) {
  142.         self.a = a
  143.         self.b = b
  144.     }
  145. }
  146.  
  147. func reverse(pair: PairDouble) {
  148.     let temp = pair.a
  149.     pair.a = pair.b
  150.     pair.b = temp
  151. }
  152.  
  153. var myPair = PairDouble(a: 1, b: 2)
  154. reverse(pair: myPair)
  155. print("\(myPair.a), \(myPair.b)")
  156.  
  157. func getPiInCompletion (a _: Int, completion: (_ pi: Double, _ cosPi: Double) -> ()) {
  158.     let pi = Double.pi
  159.     let cosPi = cos(pi)
  160.     completion(pi, cosPi)
  161. }
  162.  
  163. getPiInCompletion(a: 10) { pi, _ in
  164.     print("pi * pi = \(pi * pi)")
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement