热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

委托结构中的初始化程序没有标记为"方便"

如何解决《委托结构中的初始化程序没有标记为"方便"》经验,为你挑选了2个好方法。

我一直收到这个错误,我不明白为什么.

错误:在结构中委派初始化程序没有标记为"方便"

这就是我所拥有的(作为例子),a DeprecatedCurrency和a SupportedCurrency.

struct DeprecatedCurrency {
    let code: String
}

struct SupportedCurrency {
    let code: String
}

然后,我想添加一个便利初始化函数,用于从已弃用的货币对象转换为新的货币对象.这就是我所拥有的:

struct DeprecatedCurrency {
    let code: String
}

struct SupportedCurrency {
    let code: String

    convenience init(_ currecny: DeprecatedCurrency) { // error!!
        self.init(code: currecny.code)
    }

    init(code: String) {
        self.code = code
    }
}

这个错误甚至意味着什么,我该如何解决?


我知道如果我们不提供默认初始化程序,init(code: String)将使用Swift中的struct自动为我们生成带签名的初始化程序.所以到了最后,我真正想要的是(如果可能的话):

struct SupportedCurrency {
    let code: String

    convenience init(_ currecny: DeprecatedCurrency) { // error!!
        self.init(code: currecny.code)
    }
}

Rahul.. 18

只需删除它convenience,它不是必需的struct.

Swift文档.

初始化程序可以调用其他初始化程序来执行实例初始化的一部分.此过程称为初始化程序委派,可避免跨多个初始化程序.

他们没有提到使用convenience.它是convenience语义的,但不需要关键字.

struct DeprecatedCurrency {
    let code: String
}

struct SupportedCurrency {
    let code: String

    init(_ currency: DeprecatedCurrency) { // error!!
        self.init(code: currency.code)
    }

    init(code: String) {
        self.code = code
    }
}


JeremyP.. 9

结构不需要这个词 convenience

试试这个:

struct SupportedCurrency {
    let code: String

    init(_ currency: DeprecatedCurrency) { // error!!
        self.init(code: currency.code)
    }

    init(code: String) {
        self.code = code
    }
}

问题不在于我们为什么不把convenience对于结构,但为什么我们把convenience上课.原因是类具有继承性.对于一个类,你需要调用超类的指定构造函数(不确定这是否是正确的术语,它来自Objective-C的初始化器.该单词convenience将构造函数标记为"不是指定的构造函数".



1> Rahul..:

只需删除它convenience,它不是必需的struct.

Swift文档.

初始化程序可以调用其他初始化程序来执行实例初始化的一部分.此过程称为初始化程序委派,可避免跨多个初始化程序.

他们没有提到使用convenience.它是convenience语义的,但不需要关键字.

struct DeprecatedCurrency {
    let code: String
}

struct SupportedCurrency {
    let code: String

    init(_ currency: DeprecatedCurrency) { // error!!
        self.init(code: currency.code)
    }

    init(code: String) {
        self.code = code
    }
}



2> JeremyP..:

结构不需要这个词 convenience

试试这个:

struct SupportedCurrency {
    let code: String

    init(_ currency: DeprecatedCurrency) { // error!!
        self.init(code: currency.code)
    }

    init(code: String) {
        self.code = code
    }
}

问题不在于我们为什么不把convenience对于结构,但为什么我们把convenience上课.原因是类具有继承性.对于一个类,你需要调用超类的指定构造函数(不确定这是否是正确的术语,它来自Objective-C的初始化器.该单词convenience将构造函数标记为"不是指定的构造函数".


推荐阅读
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 设计模式——模板方法模式的应用和优缺点
    本文介绍了设计模式中的模板方法模式,包括其定义、应用、优点、缺点和使用场景。模板方法模式是一种基于继承的代码复用技术,通过将复杂流程的实现步骤封装在基本方法中,并在抽象父类中定义模板方法的执行次序,子类可以覆盖某些步骤,实现相同的算法框架的不同功能。该模式在软件开发中具有广泛的应用价值。 ... [详细]
  • Iamtryingtocreateanarrayofstructinstanceslikethis:我试图创建一个这样的struct实例数组:letinstallers: ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
author-avatar
_cristal_500
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有