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

2022-09-01 10:51:51 +08:00
 ravenZ
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 的类型...

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

func mapModel<T: HandyJSON>(_: T.Type) throws -> T {
...
}
s524256521
2022-09-01 11:45:51 +08:00
extension HandyJson
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)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/876934

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX