从 Swift 中的另一个 Class 访问动态值 2
Access Dynamic Values from another Class in Swift 2
这是问题的最简单形式:
class A {
var q: Bool = false
func setq() {
q = true
print("A: \(q)")
}
func getq() -> Bool {
return self.q
}
}
class B {
init() {
print("B: \(A().getq())")
}
}
A().setq()
B()
我无法访问 q
,其中 q = true
因为 B()
中的 A()
是 A()
.
的新实例
有什么方法可以访问 B()
中 A()
的第一个实例吗?
不是您您 编写代码的方式,不是。您需要为 B 提供一种方法,以便您 将其交给 一个 A 实例。例如,init
可能采用 A 参数。
目前你甚至不能这样做,因为你你自己没有 A 实例。您在代码的第一行 (A().setq()
) 中创建了一个 A 实例,然后您只需丢弃该实例。 (事实上 ,我很惊讶编译器没有警告你。)所以不仅 B 没有引用 A 实例,而且 you 也没有引用 A实例.
这里有一个可能的更正:
class B {
init (theA:A) {
print("B: \(theA.getq())")
}
}
let anA = A()
anA.setq()
B(theA:anA)
这就是 OOP 的本质。这一切都是关于安排事情,以便 (1) 你有实例,(2) 这些实例 寿命足够长 有用,以及 (3) 一个实例可以 得到一个引用 到它需要访问的另一个实例。每天照镜子,对自己重复十遍:"The code lives in the class, but the action is all about instances."
这是问题的最简单形式:
class A {
var q: Bool = false
func setq() {
q = true
print("A: \(q)")
}
func getq() -> Bool {
return self.q
}
}
class B {
init() {
print("B: \(A().getq())")
}
}
A().setq()
B()
我无法访问 q
,其中 q = true
因为 B()
中的 A()
是 A()
.
有什么方法可以访问 B()
中 A()
的第一个实例吗?
不是您您 编写代码的方式,不是。您需要为 B 提供一种方法,以便您 将其交给 一个 A 实例。例如,init
可能采用 A 参数。
目前你甚至不能这样做,因为你你自己没有 A 实例。您在代码的第一行 (A().setq()
) 中创建了一个 A 实例,然后您只需丢弃该实例。 (事实上 ,我很惊讶编译器没有警告你。)所以不仅 B 没有引用 A 实例,而且 you 也没有引用 A实例.
这里有一个可能的更正:
class B {
init (theA:A) {
print("B: \(theA.getq())")
}
}
let anA = A()
anA.setq()
B(theA:anA)
这就是 OOP 的本质。这一切都是关于安排事情,以便 (1) 你有实例,(2) 这些实例 寿命足够长 有用,以及 (3) 一个实例可以 得到一个引用 到它需要访问的另一个实例。每天照镜子,对自己重复十遍:"The code lives in the class, but the action is all about instances."