[英]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.