首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift 3协议过载操作符

Swift 3协议过载操作符
EN

Stack Overflow用户
提问于 2017-06-09 15:52:48
回答 1查看 867关注 0票数 0

我有一个协议,它声明Int类型的属性。我也有几个符合这个Protocol的类,现在我需要为它们重载操作符+。由于运算符+将基于声明的属性工作,因此我不希望在每个类中分别实现该运算符。

所以我有

代码语言:javascript
复制
protocol MyProtocol {
    var property: Int { get }
}

我想要的是

代码语言:javascript
复制
extension MyProtocol {
    static func +(left: MyProtocol, right: MyProtocol) -> MyProtocol {
        // create and apply operations and return result
    }
}

实际上,我成功地做到了这一点,但是尝试使用它时,我得到了一个错误ambiguous reference to member '+'

当我将操作符重载功能分别转移到每个类时,问题就消失了,但我仍然在寻找一个解决方案,以使它与协议一起工作。

EN

回答 1

Stack Overflow用户

发布于 2017-06-09 16:06:11

通过将func +...移出扩展名解决了问题,因此它只是声明MyProtocol的文件中的一个方法。

代码语言:javascript
复制
protocol MyProtocol {
    var property: Int { get }
}

func +(left: MyProtocol, right: MyProtocol) -> MyProtocol {
    // create and apply operations and return result
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44462037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档