swift學(xué)習(xí)-類(lèi),結(jié)構(gòu)的屬性-12/25

今天周五?;镜娜蝿?wù)都已完成,swift學(xué)習(xí)也順利了許多。
今天發(fā)現(xiàn)一本基于swift2.0的教材,比我原來(lái)看的那邊要更新,而且更薄一點(diǎn),就以這本書(shū)為主繼續(xù)學(xué)吧。目前看到118頁(yè)。
中午上ios論壇,又發(fā)現(xiàn)一本講ios開(kāi)發(fā)框架的書(shū),以swift為基礎(chǔ),只有50頁(yè),看完了這本,大概就可以正式開(kāi)始我的游戲開(kāi)發(fā)了。
1 類(lèi)和結(jié)構(gòu)
所有的結(jié)構(gòu)體都有一個(gè)自動(dòng)生成的成員逐一初始化器,用于初始化新結(jié)構(gòu)體實(shí)例中成員的屬性。新實(shí)例中給個(gè)屬性可以通過(guò)屬性的名稱(chēng)傳遞到成員逐一初始化器中。
例如:

struct Resolution {
    var width = 0
    var height = 0
}

var resolution = Resolution() //賦默認(rèn)值
var resolution1 = Resolution(width: 3, height: 4)

注:與結(jié)構(gòu)體不同,類(lèi)實(shí)例沒(méi)有默認(rèn)的成員逐一初始化器。
2 結(jié)構(gòu)體和枚舉都是值類(lèi)型。值類(lèi)型被賦值給一個(gè)變量,常數(shù),或者被傳遞給一個(gè)函數(shù)時(shí),實(shí)際上操作的是其的拷貝。
在swift中,所有的基本類(lèi)型:整數(shù),浮點(diǎn)數(shù),布爾值,字符串,數(shù)組,字典都是值類(lèi)型,并且都是以結(jié)構(gòu)體的形式在后臺(tái)實(shí)現(xiàn)的。
所有的結(jié)構(gòu)體的枚舉都是值類(lèi)型,這意味著它們的實(shí)例,以及實(shí)例中包含的任何值類(lèi)型屬性,在代碼中傳遞的時(shí)候都會(huì)被復(fù)制。
注意:這點(diǎn)和python完全不同,需要特別注意。
「===」恒等運(yùn)算符,判斷兩個(gè)常量或者變量是否引用同一個(gè)實(shí)例。
「!==」
3 延遲存儲(chǔ)屬性。使用lazy修飾的屬性為延遲加載屬性,只有在第一次訪(fǎng)問(wèn)時(shí)才會(huì)創(chuàng)建

class DataImporter {
    var fileName = "1.txt"
}

class DataManager {
    lazy var importer = DataImporter() //不可以用let聲明
    var data = [String]()
}

let manager = DataManager()

manager.data.append("123")
print(manager.importer.fileName) //只有在第一次訪(fǎng)問(wèn)時(shí)才會(huì)創(chuàng)建

4 計(jì)算屬性。除了存儲(chǔ)屬性外,swift還提供了計(jì)算屬性。計(jì)算屬性本身并不存儲(chǔ)值,但是提供一種get和set方法來(lái)獲得值,或設(shè)置其他屬性的值。
例如:

struct Point {
    var x = 0.0
    var y = 0.0
}

struct Size {
    var width = 0.0
    var height = 0.0
}

struct Rect {
    var origin = Point()
    var size = Size()
    var center: Point {
        get {
            return Point(x: origin.x + 2, y: origin.y + 2)
        }

        set(newPoint) {                       //便捷寫(xiě)法 set {  origin.x = newValue.x ….}
            origin.x = newPoint.x
            origin.y = newPoint.y
        }
    }
}

var square = Rect()

print(square.center)

square.center = Point(x: 1, y: 3)

print(square.origin)

明天又是周末了。
雖然還是有霧霾,還是蠻開(kāi)心的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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