簡體   English   中英

快速訪問另一個類的類類型變量

[英]access a class type variable from another class in swift

我正在嘗試學習Swift,並且正在閱讀這篇文章https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ClassesAndStructures.html VideoMode類中,將創建諸如Resolution類型的resolution之類的對象作為VideoMode類的屬性。 之后,創建一個對象, let someVideoMode = VideoMode()創建VideoMode類的let someVideoMode = VideoMode() ,並通過someVideoMode.resolution.width訪問Resolution結構的width屬性。 我很清楚這個概念。 但是我在閱讀本文時遇到了問題https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html#//apple_ref/doc/uid/TP40014097-CH21-ID245

在本文中, Person類僅創建一個屬性var residence: Residence? Residence類的。 不創建對象。 之后,創建Person類的對象john並訪問Residence類的屬性。 這是怎么回事 請告訴我,怎么Person的類特性的訪問Residence類?

在第二種情況下,我們具有optional屬性,默認情況下它將初始化為nil 如果我們看一下可選類型是什么,我們將看到它像枚舉:

enum Optional<T> {
    case Some(T)
    case None
}

它可以是Some類型,例如IntResidenceNone ,在這種情況下,它的值為nil。 默認情況下,在您的示例中為None並且在文檔中的以下代碼中:

 if let roomCount = john.residence?.numberOfRooms { print("John's residence has \\(roomCount) room(s).") } else { print("Unable to retrieve the number of rooms.") } 

它將打印

“無法檢索房間數。”

但是,如果您像這樣初始化residence

let john = Person()

// Init residence
john.residence = Residence()

if let roomCount = john.residence?.numberOfRooms {
    print("John's residence has \(roomCount) room(s).")
} else {
    print("Unable to retrieve the number of rooms.")
}

它會打印:

“約翰的住所有1個房間。”

因為可選類型enum將返回Some(Residence)並且您可以訪問它的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM