swift - 如何让 Swift 专门针对数组使用此功能?
问题描述
我有一个函数,符合KeyedDecodingContainerProtocol
,大致是:
func decode<T : Decodable>(_ type: T.Type, forKey key: K) throws -> T {
return type.init(from: decoder)
}
但是,如果T
是一个Array
,那么它的 init 方法会不必要地慢(是的,我已经进行了基准测试,它产生了很大的不同)。所以对于数组,我想运行类似的东西:
func decode<U : Decodable>(_ type: [U].Type, forKey key: K) throws -> [U] {
var array: [U] = []
for ... {
array.append(U.ElementType.init(from: decoder))
}
return array
}
然而,就目前而言,只有第一个函数被调用,即使是数组也是如此。我也可以做类似的事情if let arrayType = type as? [Decodable] {...}
或任何其他类型的分支,我可以运行特定的代码。如有必要,可以进行疯狂的黑客攻击。
是否有捷径可寻?对我来说,这将是一场巨大的表演胜利。
解决方案
推荐阅读
- ruby-on-rails - 特殊字符的编码在 sendgrid 模板的电子邮件主题中不起作用
- mysql - 如何根据其他两个表的左连接获取表的内容
- mysql - KNEX ERRORS 有没有办法在它们发生的代码中也记录 WHERE?
- vb.net - 在字符串内的所有行中拆分文本
- android - Android Studio 无法启动约束布局
- python - Github REST API 不适用于自定义域
- react-admin - 使用 OpenID Connect 反应管理员
- google-maps - 如何更改切换全屏视图按钮的颜色
- jmeter - 如何将一个请求中生成的访问令牌传递给jmeter中的所有请求?
- python - 加速 Metropolis——Python 中的 Hastings