如果extension的对象是String?
这样会报错,因为我们extension的是String,而String?是一个enum。extension的对象不对。
如果想调用test(),必须要通过
str?.test() str!.test()
但是如果想用上面的方式调用的,可以把extension写成这样:
因为String,遵循StringLiteralConvertible协议
extension Optional where Wrapped: StringLiteralConvertible { func test() { } }