gpt4 book ai didi

swift - 展开通用类型

转载 作者:行者123 更新时间:2023-11-28 08:26:53 25 4
gpt4 key购买 nike

假设我有一些变量类型

let someVariable: SomeType<AnotherType?>

我确信这个具体实例不包含任何 nilAnotherType? .有没有通用的方法将其转换为 SomeType<AnotherType> ?例如,我需要这个 convert 以供使用 someVariable在某些功能中。

最佳答案

它可以沿着这些路线走:

protocol _Optional {
associatedtype _Wrapped
func unveil() -> _Wrapped?
}

extension Optional: _Optional {
typealias _Wrapped = Wrapped
func unveil() -> _Wrapped? { return self }
}

extension SomeType where T: _Optional {
func rewrap() -> SomeType<T._Wrapped>? {
guard let _value = value.unveil() else { return nil }
return SomeType<T._Wrapped>(value: _value)
}
}

struct SomeType<T> {
let value: T
}

let someValue = SomeType<Int?>(value: 42) // SomeType<Int?>
let rewrappedValue = someValue.rewrap() // SomeType<Int>?
let forceUnwrappedValue = someValue.rewrap()! // SomeType<Int>

细节取决于 SomeType 的特定实现的细节(我在示例中使用了一个最简单的假设)。

关于swift - 展开通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39718621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com