Swift 以={}()结尾的变量的名称是什么?
我一直在翻阅Swift文档,试图找到下面Swift语法的名称Swift 以={}()结尾的变量的名称是什么?,swift,Swift,我一直在翻阅Swift文档,试图找到下面Swift语法的名称 static let taskDateFormat: DateFormatter = { let formatter = DateFormatter() formatter.dateStyle = .long return formatter }() 我不知道这个语法叫什么。我被={}()组件弄糊涂了。这叫什么?是代码为taskDateFormat属性生成默认的DateFormatter值 根据Swift手册
static let taskDateFormat: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .long
return formatter
}()
我不知道这个语法叫什么。我被={}()组件弄糊涂了。这叫什么?是代码为
taskDateFormat
属性生成默认的DateFormatter
值
根据Swift手册(重点矿山):
使用闭包或函数设置默认属性值
如果存储属性的默认值需要一些自定义或设置,则可以使用闭包或全局函数为该属性提供自定义的默认值。每当初始化属性所属类型的新实例时,将调用闭包或函数,并将其返回值指定为属性的默认值
请注意,闭包的结束大括号后面紧跟着一对空括号。这会告诉Swift立即执行关闭。如果省略这些括号,则试图将闭包本身指定给属性,而不是闭包的返回值
基本上,代码将taskDateFormat
属性预先初始化为一个新的DateFormatter
对象,并在设置taskDateFormat
属性之前设置dateStyle
属性。语法={}()
表示一个块(也称为闭包),它可以返回任何东西
由于您的变量是DateFormatter
类型,它将期望从块返回一个DateFormatter
实例
变量上的该类型是强制性的,如果删除该变量类型,则会出现以下错误:
无法推断复杂的闭包返回类型;添加显式类型以消除歧义
以便进一步阅读,这通常称为立即执行(或调用)的closure。这正是我想要的。非常感谢。