我正在尝试确定给定类型 t
(Any.Type
) 是否为可选类型,我正在使用此测试
t is Optional<Any>.Type
但它总是返回 false。
那么有什么办法可以实现吗?
最佳答案
假设你正在尝试做的是这样的:
let anyType: Any.Type = Optional<String>.self
anyType is Optional<Any>.Type // false
遗憾的是,swift 目前(从 Swift 2 开始)不支持 covariance nor contravariance无法直接针对 Optional.Type
进行类型检查:
// Argument for generic parameter 'Wrapped' could not be inferred
anyType is Optional.Type // Causes error
另一种方法是使 Optional
扩展一个特定的协议(protocol),并检查该类型:
protocol OptionalProtocol {}
extension Optional : OptionalProtocol {}
let anyType: Any.Type = Optional<String>.self
anyType is OptionalProtocol.Type // true
关于swift - 确定 Any.Type 是否可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536420/