Swift 2 學(xué)習(xí)筆記 11.結(jié)構(gòu)體

課程來自慕課網(wǎng)liuyubobobo老師


結(jié)構(gòu)體
  • 結(jié)構(gòu)體基礎(chǔ)
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
  • 結(jié)構(gòu)體之構(gòu)造函數(shù)
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")
  • 結(jié)構(gòu)體之可失敗的構(gòu)造函數(shù)
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
  • 在結(jié)構(gòu)體和枚舉中定義方法
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()
  • 結(jié)構(gòu)體和枚舉是值類型
struct Point {
    var x = 0
    var y = 0
}

var p1 = Point()
var p2 = p1

p1.x += 1
p1.x  // 1
p2.x  // 0
  • 隨處可見的結(jié)構(gòu)體
// Array, Dictionary, Set 都是結(jié)構(gòu)體
// Int, Float, Double, Bool, String 都是結(jié)構(gòu)體
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容