[英]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
類型,例如Int
或Residence
或None
,在這種情況下,它的值為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.