考虑以下代码:
class A {
var x = 0;
var y = 0;
init(x vx: int, y vy: int){
x = vx
y = vy
}
}
class B {
var a_array: [A]
init(){
a_array = []
}
func append(_ a:A){
a_array.append(a)
}
func sum_all(){
var sum = 0
for a in a_array {
sum += (a.x + a.y)
}
print("sum all is",sum)
}
}
var a1 = A(1, 2)
var a2 = A(3, 4)
var b = B();
b.append(a1)
b.append(a2)
b.sum_all() //it prints out 10 correctly.
a1.x = 2
b.sum_all() //it still prints out 10
我想要它打印出 11,我该如何修改这些代码? 在 C 中,可以很容易地使用指针引用来完成,在 Swift 中如何完成? 非常感谢!
最佳答案
它实际上在你说它仍然打印 10 的行中打印 11。
你可以通过修改你的代码来尝试一下,让它看起来更像这样的 Swift 语法:
import Foundation
class A {
var x = 0
var y = 0
init(_ vx: Int, _ vy: Int){
x = vx
y = vy
}
}
class B {
var a_array: [A]
init(){
a_array = []
}
func append(_ a:A){
a_array.append(a)
}
func sum_all(){
var sum = 0
for a in a_array {
sum += (a.x + a.y)
}
print("sum all is",sum)
}
}
var a1 = A(1, 2)
var a2 = A(3, 4)
var b = B()
b.append(a1)
b.append(a2)
print("first")
b.sum_all() //it prints out 10 correctly.
a1.x = 2
print("last")
b.sum_all() //it actually prints 11.
您可以通过在这个 playground 在线复制粘贴来尝试该片段 http://online.swiftplayground.run/并运行它。
这是输出:
first
sum all is 10
last
sum all is 11
关于ios - Swift 类包含另一个类作为 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59810356/