我对Swift相对较新,并且想知道是否可以在Swift中设置一个等于另一个变量的变量。我有一个虚拟计数器变量,我想设置等于另一个变量,但它给了我一个错误。它似乎可以在Playground环境中使用,但不能在ViewController中使用。
import UIKit
class ViewController: UIViewController {
var count = 10.0
var count2 = count
...
}
由于
答案 0 :(得分:5)
在这种情况下,我建议你使用一个只在你访问时才初始化的惰性属性:
import UIKit
class ViewController: UIViewController {
var count = 10.0
lazy var count2: Int = { self.count }()
...
}
懒惰:上面解释
{ self.count }
:一个闭包,它只是一个没有名字的函数,并在正文后面用括号()
执行。
就像一个函数一样,它有一个返回类型(Int
),在这种情况下,Swift推断出return
所以闭包相当于{ return self.count }
有关详情,请参阅以下关于closures和lazy initialization的链接。
答案 1 :(得分:0)
我尝试按如下方式更改它并且它确实没有给我错误消息msg实例成员数不能在视图控制器中使用。
var count = 10.0
var count2: Int? {
return Int(count)
}
答案 2 :(得分:0)
我不确定,如果我理解你的需求,但很可能你可以使用属性观察者来获取“变量”以强制它们具有相同的值
struct S {
var a: Int = 0 {
didSet {
if b != a {
b = a
}
}
}
var b: Int = 0 {
didSet {
if a != b {
a = b
}
}
}
}
var s = S()
s.a = 10
print(s) // S(a: 10, b: 10)
s.b = 100
print(s) // S(a: 100, b: 100)
答案 3 :(得分:0)
只需在类中声明变量时设置类型或初始值:
var count = 10
var count2 : Int
然后,在类的初始化器中将它们设置为相等:
init() {
count2 = count
}