let nanoseconds: UInt64
let operation: @Sendable () async throws -> Success
init(
seconds: TimeInterval,
operation: @escaping @Sendable () async throws -> Success
) {
self.nanoseconds = UInt64(seconds * 1_000_000_000)
self.operation = operation
}
关键词(keywords)解释:
@escaping: 加上此关键词,说明可以在初始化方法(init)的范围之外存储和执行闭包。
@Sendable: 我们不能像处理其它类型那样遵守闭包或函数类型的协议。这个新关键字表明闭包或函数类型符合 Sendable 协议,这意味着在并发域之间传输是安全的。
async: 意味着闭包应该在并发异步上下文中执行。
throws: 闭包可能会抛出异常。
这是一组繁琐的关键字,但它们都可以帮助编译器(compiler)和运行时(the runtime )清楚地了解我们的意图并正确运行代码。
2021.12.18 午后
上海 徐泾镇图书馆
网友评论