V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ravenZ
V2EX  ›  Swift

Swift 泛型的入参没有显式用到..有种很难受的感觉..

  •  
  •   ravenZ · 2022-09-01 10:51:51 +08:00 · 1072 次点击
    这是一个创建于 575 天前的主题,其中的信息可能已经有所发展或是发生改变。
    func mapModel<T: HandyJSON>(_ type: T.Type) throws -> T {
    let jsonString = String(data: data, encoding: .utf8)
    guard let model = JSONDeserializer<T>.deserializeFrom(json: jsonString) else {
    throw MoyaError.jsonMapping(self)
    }
    return model
    }

    这里的 type 作为入参.却只隐式定义了 T 的类型...

    问问大佬们
    现在有新的写法吗?
    还是要这么玩就必须得这么写?
    3 条回复    2022-09-01 11:59:54 +08:00
    ravenZ
        1
    ravenZ  
    OP
       2022-09-01 11:02:52 +08:00
    ....我自己想了一下..
    直接这么写就好了... 优雅了.歧义没了..作用也达到了...

    func mapModel<T: HandyJSON>(_: T.Type) throws -> T {
    ...
    }
    s524256521
        2
    s524256521  
       2022-09-01 11:45:51 +08:00 via Android
    extension HandyJson
    kera0a
        3
    kera0a  
       2022-09-01 11:59:54 +08:00
    直接不要这个参数也行吧,调用方式则为
    let model:XX = data.mapModel()
    let model = data.mapModel<XX>()

    和现在的调用方式差不多
    let mod = data.mapModel(XX.self)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2936 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 11:09 · PVG 19:09 · LAX 04:09 · JFK 07:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.