swift2 在Swift 2中,是否可以将一个变量设置为等于另一个变量?

jdgnovmf  于 2022-11-06  发布在  Swift
关注(0)|答案(4)|浏览(208)

我对Swift比较陌生,想知道在Swift中是否可以将一个变量设置为等于另一个变量。我有一个虚拟计数器变量,我想将其设置为等于另一个变量,但它给了我一个错误。这似乎在Playground环境中是可能的,但在ViewController中不是。

import UIKit
class ViewController: UIViewController {
    var count = 10.0
    var count2 = count
    ...
}

谢谢

busg9geu

busg9geu1#

在这种情况下,我建议您使用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和惰性属性的链接。

lx0bsm1f

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)
pnwntuvh

pnwntuvh3#

我试图改变它如下,它没有给予我错误消息示例成员计数不能在视图控制器中使用.

var count = 10.0
   var count2: Int? {
    return Int(count)
}
vptzau2j

vptzau2j4#

只需在类中声明变量时设置类型或初始值:

var count = 10
var count2 : Int

然后,在类的初始化程序中将它们设置为相等:

init() {
     count2 = count
}

相关问题