Swift - Day 6
Today, I learned: get & set
import UIKit class NamedShape { var numberOfSides: Int = 0 var name: String
init(name: String) {
self.name = name
}
func simpleDescription() -> String {
return "A shape with \(name) sides."
}
}
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)."
}
}
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 {
print("this is inside of get perimeter \(3.0 * sideLength) and \(name)")
return 3.0 * sideLength
}
set {
print("this is after get and inside of set perimeter \(sideLength)")
sideLength = newValue / 3.0
}
}
var getOnlyPerimeter: Double {
print(3.0 * sideLength)
return 3.0 * sideLength
}
func testComputedProperty() {
// Set the perimeter perimeter = 12.0
// Get perimeter print("perimeter getter: ", perimeter)
}
override func simpleDescription() -> String {
return "An equilateral triangle with sides of length \(sideLength)"
}
}
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: 5, name: "another test shape")
print(triangleAndSquare.square.sideLength)
//output is 5
triangleAndSquare.triangle.testComputedProperty()
//call get and set
<output> 5.0 this is after get and inside of set perimeter 5.0 this is inside of get perimeter 12.0 and another test shape perimeter getter: 12.0














