swift – 对Codable的Explit一致性消除了结构上的成员初始化器生成

swift – 对Codable的Explit一致性消除了结构上的成员初始化器生成,第1张

概述鉴于: struct Foo { let bar: Bar} 我得到一个方便的初始化器使用: 让foo = Foo(bar:Bar()) 但是如果Bar本身不是Codable,或者由于某些其他原因我需要在Foo上显式实现Codable,那么便利的成员初始化器不再存在: struct Foo: Codable { init(from decoder: Decoder) throw 鉴于:
struct Foo {    let bar: bar}

我得到一个方便的初始化器使用:

让foo = Foo(bar:bar())

但是如果bar本身不是Codable,或者由于某些其他原因我需要在Foo上显式实现Codable,那么便利的成员初始化器不再存在:

struct Foo: Codable {    init(from decoder: Decoder) throws {    }    func encode(to encoder: Encoder) throws {    }    let bar: bar}

我得到:

让foo = Foo(bar:bar())

Incorrect argument label in call (have ‘bar:’,expected ‘from:’)

是否有可能在这里拥有两全其美?

您可以在扩展中实现Codable一致性.

在扩展中添加任何struct初始化程序时,不会删除成员初始值设定项.

struct MyStruct {    var name: String}extension MyStruct: Codable {} // preserves memberwise initializerMyStruct(name: "Tim")
总结

以上是内存溢出为你收集整理的swift – 对Codable的Explit一致性消除了结构上的成员初始化器生成全部内容,希望文章能够帮你解决swift – 对Codable的Explit一致性消除了结构上的成员初始化器生成所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1089725.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存