Swift

Swift5 泛型+协议 实际应用

2021-08-23  本文已影响0人  小奉不在乎
struct FM<Base> {
    var base: Base
    init(_ base: Base) {
        self.base = base
    }
}
extension FM where Base == String {
    var nimberCount: Int {
        return 0
    }
    static func test() {}
}

//extension String {
//    // 实例方法使用
//    var fm: FM<String> { FM(self) }
//    // 类调用
//    static var fm: FM<String>.Type { FM<String>.self }
//}
//
//
//"1111".fm.nimberCount
//String.fm.test()

extension String: FMCompatible {}

// 协议方式
protocol FMCompatible {}
extension FMCompatible {
    // 实例方法使用
    var fm: FM<Self> {
        set {}
        get { FM(self) }
    }
    // 类调用
    static var fm: FM<Self>.Type {
        set {}
        get { FM<Self>.self }
    }
}

"1111".fm.nimberCount
String.fm.test()

上一篇下一篇

猜你喜欢

热点阅读