我对Swift比较陌生,想知道在Swift中是否可以将一个变量设置为等于另一个变量。我有一个虚拟计数器变量,我想将其设置为等于另一个变量,但它给了我一个错误。这似乎在Playground环境中是可能的,但在ViewController中不是。
import UIKit class ViewController: UIViewController { var count = 10.0 var count2 = count ... }
谢谢
busg9geu1#
在这种情况下,我建议您使用lazy属性,该属性只有在您访问它时才会初始化:
lazy
import UIKit class ViewController: UIViewController { var count = 10.0 lazy var count2: Int = { self.count }() ... }
{ self.count }
()
像函数一样,它有一个返回类型(Int),在这个例子中,Swift推断出return,所以闭包等价于{ return self.count }。有关更多信息,请参见这些关于closures和惰性属性的链接。
Int
return
{ return self.count }
lx0bsm1f2#
我不确定,如果我了解您的需求,但可能您可以使用'variables'的属性观察器来强制两者具有相同的值
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)
pnwntuvh3#
我试图改变它如下,它没有给予我错误消息示例成员计数不能在视图控制器中使用.
var count = 10.0 var count2: Int? { return Int(count) }
vptzau2j4#
只需在类中声明变量时设置类型或初始值:
var count = 10 var count2 : Int
然后,在类的初始化程序中将它们设置为相等:
init() { count2 = count }
4条答案
按热度按时间busg9geu1#
在这种情况下,我建议您使用
lazy
属性,该属性只有在您访问它时才会初始化:有关语法和语义的更多信息:
{ self.count }
:一个闭包,它是一个没有名字的函数,并且在主体后面加上括号()
来执行。像函数一样,它有一个返回类型(
Int
),在这个例子中,Swift推断出return
,所以闭包等价于{ return self.count }
。有关更多信息,请参见这些关于closures和惰性属性的链接。
lx0bsm1f2#
我不确定,如果我了解您的需求,但可能您可以使用'variables'的属性观察器来强制两者具有相同的值
pnwntuvh3#
我试图改变它如下,它没有给予我错误消息示例成员计数不能在视图控制器中使用.
vptzau2j4#
只需在类中声明变量时设置类型或初始值:
然后,在类的初始化程序中将它们设置为相等: