加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:32:05 所属栏目:百科 来源:网络整理
导读:我发现在 Swift中声明变量的这些不同方法非常有趣: // METHOD 1var dogName: String = "Charlie"// METHOD 2var dogName: String { return "Charlie"}// METHOD 3let dogName = { return "Charlie"}// METHOD 4var dogName: String = { return "Charlie"}()
我发现在 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
}()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读