美文网首页
14 Swift 结构体

14 Swift 结构体

作者: 猴子的救兵520 | 来源:发表于2017-07-05 19:32 被阅读65次

    结构体的介绍

    • 概念介绍
      • 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合
      • 结构体(struct)指的是一种数据结构
      • 结构体是值类型,在方法中传递时是值传递
    • 结构的定义格式
    struct 结构体名称 {
        // 属性和方法
    }
    

    结构体的增强

    • 扩充构造函数
      • 默认情况下创建Location时使用Location(x: x值, y: y值)
      • 但是为了让我们在使用结构体时更加的灵活,swift还可以对构造函数进行扩充
      • 扩充的注意点
        • 在扩充的构造函数中必须保证成员变量是有值的
        • 扩充的构造函数会覆盖原有的构造函数
    struct Location {
        var x : Double
        var y : Double
        
        init(x : Double, y : Double) {
            self.x = x
            self.y = y
        }
        
        init(xyString : String) {
            let strs = xyString.components(separatedBy: ",")
            x = Double(strs.first!)!
            y = Double(strs.last!)!
        }
    }
    
    let location = Location(x: 100, y: 100)
    let location1 = Location(xyString: "101,101")
    
    • 为结构体扩充方法
      • 为了让结构体使用更加灵活,swift的结构体中可以扩充方法
      • 例子:为Location结构体扩充两个方法
        • 向水平方向移动的方法
        • 向垂直方向移动的方法
    struct Location {
        var x : Double
        var y : Double
        
        init(x : Double, y : Double) {
            self.x = x
            self.y = y
        }
        
        init(xyString : String) {
            let strs = xyString.components(separatedBy: ",")
            x = Double(strs.first!)!
            y = Double(strs.last!)!
        }
        
        mutating func moveH(x : Double) {
            self.x += x
        }
        
        mutating func moveV(y : Double) {
            self.y += y
        }
    }
    
    var location = Location(x: 100, y: 100)
    print(location)         // Location(x: 100.0, y: 100.0)
    
    location.moveH(x: 30)
    location.moveV(y: -10)
    print(location)         // Location(x: 130.0, y: 90.0)
    
    • 注意:
      • 如果我们使用的 Location 不是自己定义的,但是我们仍旧希望在自己的项目里扩展 Location 的操作
      • Swift 也能帮我们达成,这个机制,叫做 extension
    extension Location {
        mutating func moveH(x : Double) {
            self.x += x
        }
    
        mutating func moveV(y : Double) {
            self.y += y
        }
    }
    

    相关文章

      网友评论

          本文标题:14 Swift 结构体

          本文链接:https://www.haomeiwen.com/subject/cyxkcxtx.html