swift 中有 () -> Void 或 () -> () 的标准类型吗?

fab*_*ioM 5 swift

有几次我必须用类型写一个块

() -> Void 或者 () -> ()

现在,如果块可以为空,则变为

(() -> Void)?

这不是很可读。

是否有标准类型可供使用,或者我能做的最好的事情就是创建一个自定义类型typealias

Leo*_*rey 0

不幸的是,没有 Swift 标准类型(() -> Void)?(或者(() -> ())?可以说更难阅读)。如果您查看 Swift 标准库,您还会发现这Void只是typealias一个空元组的a ()

typealias Void = ()
Run Code Online (Sandbox Code Playgroud)

这意味着你可以写(Void -> Void)?,这可能更容易阅读?尽管在标准库中,但这只是为了可读性而采用的标准类型。

除此之外,执行此操作的唯一方法是使用自定义typealias,例如:

typealias OptionalEmptyClosure = (() -> ())?
Run Code Online (Sandbox Code Playgroud)