如何在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 }() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |