我正在尝试确定给定类型是否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 开始)不支持协变或逆变 https://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29并直接进行类型检查Optional.Type
不能这样做:
// Argument for generic parameter 'Wrapped' could not be inferred
anyType is Optional.Type // Causes error
另一种方法是使Optional
扩展特定协议,并检查该类型:
protocol OptionalProtocol {}
extension Optional : OptionalProtocol {}
let anyType: Any.Type = Optional<String>.self
anyType is OptionalProtocol.Type // true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)