可选扩展中的 swift 关键字 Wrapped 意味着什么?
extension Optional {
func flatMap<U>(_ transform: (Wrapped) -> U?) -> U? {
guard let x = self else { return nil }
return transform(x)
}
}
Run Code Online (Sandbox Code Playgroud)
在扩展中,您要扩展的类型的泛型参数可以通过仅编写其简单名称来引用,并注意这Optional是一个泛型类型。
@frozen enum Optional<Wrapped>
Run Code Online (Sandbox Code Playgroud)
所以Wrapped在函数声明中指的是在那里声明的泛型参数。
如您所知,可选类型通常写为T?(whereT是 some type),这是 的语法糖Optional<T>。例如,Int?与 相同Optional<Int>, 与String?相同Optional<String>,等等。
换句话说,Wrapped基本上只表示 之前的类型?,无论它是什么。如果你有一个String?(又名Optional<String>),那么它的签名flatMap将是:
func flatMap<U>(_ transform: (String) -> U?) -> U?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |