Swift 学习笔记 class

前端之家收集整理的这篇文章主要介绍了Swift 学习笔记 class前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

感谢Github上The Swift Programming Language开源翻译的中文版,感谢极客学院wiki提供的PDF版本
SwiftTour是对Swift主要的语言特性有个速览,后续的教程会逐个展开阐述。
代码上传Github,有兴趣的可以下载下来试试

// 使用class@H_502_8@和类名创建一个类 class@H_502_8@ Shape@H_502_8@ { var@H_502_8@ numberOfSides@H_502_8@ = 0 func@H_502_8@ simpleDescription@H_502_8@()@H_502_8@ ->String@H_502_8@ { return@H_502_8@ "A@H_502_8@ Shape@H_502_8@ with@H_502_8@ \(numberOfSides)@H_502_8@ sides@H_502_8@" } } var@H_502_8@ shape@H_502_8@ = Shape@H_502_8@()@H_502_8@ shape@H_502_8@.numberOfSides@H_502_8@ = 7 var@H_502_8@ shapeDescription@H_502_8@ = shape@H_502_8@.simpleDescription@H_502_8@()@H_502_8@ // 使用init@H_502_8@创建构造器,使用deinit@H_502_8@创建一个析构函数 class@H_502_8@ NameShape@H_502_8@ { var@H_502_8@ numberOfSides@H_502_8@:@H_502_8@ Int = 0@H_502_8@
    var name: String
    init(name: String) {
        self.name = name
    }
    func simpleDescription() ->String {
        return@H_502_8@ "A Shape with \(numberOfSides) sides"@H_502_8@
    }
}

// 子类重写父类方法需要用override标记
class@H_502_8@ Squre@H_502_8@:@H_502_8@ NameShape {
    var sideLength: Double
    init(sideLength: Double,name: String){
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 4@H_502_8@
    }
    func area()->Double {
        return@H_502_8@ sideLength * sideLength
    }
    override func simpleDescription() -> String {
        return@H_502_8@ "A square with sides of length \(sideLength)"@H_502_8@
    }
}
let test = Squre(sideLength: 5.2@H_502_8@,name: "My test Square"@H_502_8@)
test.area()
test.simpleDescription()

// 类的getter和setter
class@H_502_8@ EquilateralTriangle@H_502_8@:@H_502_8@ NameShape {
    var sideLength: Double = 0.0@H_502_8@
    init(sideLength: Double,name: String){
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 3@H_502_8@
    }
    var perimeter: Double {
        get {
            return@H_502_8@ 3.0@H_502_8@ * sideLength
        }
        set {
            sideLength = newValue / 3.0@H_502_8@
        }
    }
    override func simpleDescription() -> String {
        return@H_502_8@ "An equilateral triangle with sides of length \(sideLength)"@H_502_8@
    }
}
var triangel = EquilateralTriangle(sideLength: 3.1@H_502_8@,name: "a triangle"@H_502_8@)
print(triangel.perimeter)
triangel.perimeter = 9.9@H_502_8@
print(triangel.sideLength)

// 不需要计算属性,仍然需要在设置新值之前或之后运行代码,使用willset和didset
// 确保三角形的边长综合正方形的边长相同
class@H_502_8@ TriangleAndSquare@H_502_8@ { var@H_502_8@ triangle@H_502_8@:@H_502_8@ EquilateralTriangle {
        willSet {
            square.sideLength = newValue.sideLength
        }
    }
    var square: Squre {
        willSet {
            triangel.sideLength = newValue.sideLength
        }
    }
    init(size: Double,name: String) {
        square = Squre(sideLength: size,name: name)
        triangle = EquilateralTriangle(sideLength: size,name: name)
    }
}
var triangleAndSquare = TriangleAndSquare(size: 10@H_502_8@,name: "Another tested Shape"@H_502_8@)
print(triangleAndSquare.square.sideLength)
print(triangleAndSquare.triangle.sideLength)
triangleAndSquare.triangle = EquilateralTriangle(sideLength: 30@H_502_8@,name: "Other"@H_502_8@)
print(triangleAndSquare.triangle.sideLength)
print(triangleAndSquare.square.sideLength)

// 处理变量的可选值时,可以在操作前加?
let optionalSquare: Squre? = Squre(sideLength: 2.5@H_502_8@,name: "Optional square"@H_502_8@)
let sideLength = optionalSquare?.sideLength
print(sideLength)

猜你在找的Swift相关文章