
我错过了什么?
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)