美文网首页
Swift 2 学习笔记 11.结构体

Swift 2 学习笔记 11.结构体

作者: Maserati丶 | 来源:发表于2018-11-21 20:29 被阅读0次

    课程来自慕课网liuyubobobo老师


    结构体
    • 结构体基础
    struct Location{
        let latitude: Double
        let longitude: Double
    }
    
    let appleHeadQuarterLocation: Location = Location(latitude: 37.3230, longitude: -122.0322)
    
    struct Place {
        let location: Location
        var name: String
    }
    
    var appleHeadQuarter = Place(location: appleHeadQuarterLocation, name: "Apple")
    appleHeadQuarter.location.latitude  // 37.323
    
    • 结构体之构造函数
    struct Location{
        let latitude: Double
        let longitude: Double
        var placeName: String?
        
        init(coordinateString: String) {
    //        let preIndex = coordinateString.range(of: ",")!.lowerBound
    //        let sufIndex = coordinateString.range(of: ",")!.upperBound
    //        self.latitude = Double(coordinateString.prefix(upTo: preIndex)) ?? 0
    //        self.longitude = Double(coordinateString.suffix(from: sufIndex)) ?? 0
            
            let commaIndex = coordinateString.index(of: ",")!
            self.latitude = Double(coordinateString[..<commaIndex]) ?? 0
            self.longitude = Double(coordinateString[coordinateString.index(after: commaIndex)..<coordinateString.endIndex]) ?? 0
        }
        
        init(latitude: Double, longitude: Double) {
            self.latitude = latitude
            self.longitude = longitude
        }
        
        init(latitude: Double, longitude: Double, placeName: String) {
            self.latitude = latitude
            self.longitude = longitude
            self.placeName = placeName
        }
    }
    
    
    let location = Location(coordinateString: "37.3230,-122.0322")
    let location2 = Location(latitude: 37.3230, longitude: -122.0322)
    let location3 = Location(latitude: 37.3220, longitude: -122.0322, placeName: "Apple Head Quarter")
    
    • 结构体之可失败的构造函数
    struct Location{
        let latitude: Double
        let longitude: Double
        var placeName: String?
        
        init?(coordinateString: String) {
            if let commaIndex = coordinateString.index(of: ","){
                self.latitude = Double(coordinateString[..<commaIndex]) ?? 0
                self.longitude = Double(coordinateString[coordinateString.index(after: commaIndex)..<coordinateString.endIndex]) ?? 0
            }else {
                return nil
            }
        }
        
    }
    
    
    let location = Location(coordinateString: "37.3230&-122.0322")  // nil
    
    • 在结构体和枚举中定义方法
    struct Location{
        let latitude: Double
        let longitude: Double
        var placeName: String?
        
        init?(coordinateString: String) {
            if let commaIndex = coordinateString.index(of: ","){
                self.latitude = Double(coordinateString[..<commaIndex]) ?? 0
                self.longitude = Double(coordinateString[coordinateString.index(after: commaIndex)..<coordinateString.endIndex]) ?? 0
            }else {
                return nil
            }
        }
        
        func printLocation() {
            print(self.latitude)
            print(self.longitude)
        }
    }
    
    
    let location = Location(coordinateString: "37.3230,-122.0322")
    location?.printLocation()
    
    • 结构体和枚举是值类型
    struct Point {
        var x = 0
        var y = 0
    }
    
    var p1 = Point()
    var p2 = p1
    
    p1.x += 1
    p1.x  // 1
    p2.x  // 0
    
    • 随处可见的结构体
    // Array, Dictionary, Set 都是结构体
    // Int, Float, Double, Bool, String 都是结构体
    

    相关文章

      网友评论

          本文标题:Swift 2 学习笔记 11.结构体

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