swift – 在Int扩展上调用mutating func

swift – 在Int扩展上调用mutating func,第1张

概述在命令行应用程序中创建了一个扩展.当我尝试调用calc方法时,它将无法工作.调用desc有效. 我错过了什么? protocol Calculatable { var desc:String { get } mutating func calc()}class MyClass : Calculatable { var desc:String = "MyClass" 在命令行应用程序中创建了一个扩展.当我尝试调用calc方法时,它将无法工作.调用desc有效.

我错过了什么?

protocol Cal@R_419_6603@table {    var desc:String { get }    mutating func calc()}class MyClass : Cal@R_419_6603@table {    var desc:String = "MyClass"    func calc()  {        desc += " is great"    }}extension Int: Cal@R_419_6603@table {    var desc:String { return "hi" }    mutating func calc() {        self += 10    }}7.desc  // works7.calc() // Compiler error: Could not find member calc
解决方法 那是因为7是常数.如果您首先将其存储在变量中,则可以执行此 *** 作:

var number = 10number.calc()

注意:您获得的错误不是一个非常好的错误.斯威夫特肯定在这方面有一些工作要做.真正的错误是你试图在一个不可变的实例上调用一个mutating方法

你可以做的是使它成为常规方法并返回一个新值而不是试图改变self:

extension Int: Cal@R_419_6603@table {    var desc: String { return "hi" }    func calc() -> Int {        return self + 10    }}7.calc() // 17
总结

以上是内存溢出为你收集整理的swift – 在Int扩展上调用mutating func全部内容,希望文章能够帮你解决swift – 在Int扩展上调用mutating func所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存