如何在Swift中正确声明变量?

前端之家收集整理的这篇文章主要介绍了如何在Swift中正确声明变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现在 Swift中声明变量的这些不同方法非常有趣:
// METHOD 1
var dogName: String = "Charlie"

// METHOD 2
var dogName: String {
    return "Charlie"
}

// METHOD 3
let dogName = {
    return "Charlie"
}

// METHOD 4
var dogName: String = {
    return "Charlie"
}()

显然方法3声明了一个让我们知道差异;但为什么Swift允许方法4?

这四种方法有什么区别?

特别是在方法2和方法4之间我很困惑.另外,为什么方法3与方法4相比失去了最后的括号?

方法1是String的标准变量声明.它有一个二传手和一个吸气剂
var dogName: String = "Charlie"

print(dogName) -> "Charlie"
dogName = "Rex" // Valid

方法2是String类型的计算属性,是只读的

var dogName: String {
    return "Charlie"
}

print(dogName) -> "Charlie"
dogName = "Rex" // Invalid as property is read-only

方法3是类型() – >的只读属性.字符串,所以基本上是一个lambda函数.

let dogName = {
    return "Charlie"
}

print(dogName) -> "(Function)"
print(dogName()) -> "Charlie"
dogName = "Rex" // Invalid as property is read-only

方法4是一个闭包,它将在初始化包含对象时执行.因为它是一个var,你可以用另一个值替换它

var dogName: String = {
    return "Charlie"
}()

print(dogName) -> "Charlie"
dogName = "Rex" // Valid

话虽这么说,因为方法4是一个闭包,你可以在其中执行其他命令.下面是一个示例,您可以使用此构造初始化UILabel:

var dogNameLabel: UILabel = {
    let label = UILabel(frame: CGRect(x: 0,y: 0,width: 10,height: 10))
    label.text = "Charlie"
    return label
}()

猜你在找的Swift相关文章