swift 这种参数叫什么?它是线程安全的吗?

ecbunoof  于 2022-10-31  发布在  Swift
关注(0)|答案(1)|浏览(119)

这些参数只初始化一次,如下所示:

private let dateFormatter: DateFormatter = {
  let formatter = DateFormatter()
  ...
  return formatter
}()

我想知道更多关于这类参数的信息,但是不知道你叫它们什么?它们是线程安全的吗(假设类型是)?

f0ofjuux

f0ofjuux1#

我不认为它们有什么特别的名字,你通过定义一个匿名函数并调用该函数来初始化一个变量,所以我把它叫做 * 定义并调用初始化器。
这个构造非常非常常见。它特别有用,就像这里一样,它可以确保某个东西只创建和配置一次(创建日期格式化程序的开销很大)。它没有特殊的线程相关特征。它和你省略的代码一样是线程安全的。
需要注意的一点是,如果这是一个属性,那么省略的代码就不能引用self,除非将let更改为lazy var(可惜,没有lazy let;我认为这是语言中的一个严重漏洞。)

相关问题