繁体   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