出于有效编码的目的,我想知道是否有一种方法可以为所有带有声明异常的包装器类型在Optional
上编写扩展。
在此特定情况下,该值为String
。
我想要的用例如下:
extension Optional where Wrapped != String {
var asString: String? { return self as? String }
}
我在这里遇到了很多编译错误,当然这是不可能的。
我希望能够做到这一点,以使我看不到asString
对象的String?
属性,因为那里确实存在一些冗余。
注意:这应该能够应用于Wrapped
可以采用的任何有效类型。
答案 0 :(得分:0)
extension Optional {
var asString: String? {
guard let unwrapped = self else {
return nil
}
return "\(unwrapped)"
}
}
仅语言允许使用此解决方案
您不能在where
块中排除某些类或协议。
示例
let some: Range? = 0..<1
some.asString
“ 0 .. <1”