Swift 以={}()结尾的变量的名称是什么?

Swift 以={}()结尾的变量的名称是什么?,swift,Swift,我一直在翻阅Swift文档,试图找到下面Swift语法的名称 static let taskDateFormat: DateFormatter = { let formatter = DateFormatter() formatter.dateStyle = .long return formatter }() 我不知道这个语法叫什么。我被={}()组件弄糊涂了。这叫什么?是代码为taskDateFormat属性生成默认的DateFormatter值 根据Swift手册

我一直在翻阅Swift文档,试图找到下面Swift语法的名称

static let taskDateFormat: DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateStyle = .long
    return formatter
}()

我不知道这个语法叫什么。我被={}()组件弄糊涂了。这叫什么?

是代码为
taskDateFormat
属性生成默认的
DateFormatter

根据Swift手册(重点矿山):

使用闭包或函数设置默认属性值 如果存储属性的默认值需要一些自定义或设置,则可以使用闭包或全局函数为该属性提供自定义的默认值。每当初始化属性所属类型的新实例时,将调用闭包或函数,并将其返回值指定为属性的默认值

请注意,闭包的结束大括号后面紧跟着一对空括号。这会告诉Swift立即执行关闭。如果省略这些括号,则试图将闭包本身指定给属性,而不是闭包的返回值

基本上,代码将
taskDateFormat
属性预先初始化为一个新的
DateFormatter
对象,并在设置
taskDateFormat
属性之前设置
dateStyle
属性。

语法
={}()
表示一个块(也称为闭包),它可以返回任何东西

由于您的变量是
DateFormatter
类型,它将期望从块返回一个
DateFormatter
实例

变量上的该类型是强制性的,如果删除该变量类型,则会出现以下错误:
无法推断复杂的闭包返回类型;添加显式类型以消除歧义

以便进一步阅读,这通常称为立即执行(或调用)的closure。这正是我想要的。非常感谢。