我现在正在学习Swift语言。
在Apple的文档中,我看到了一个扩展示例:
extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() {
self += 42
}
}
7.simpleDescription
所以我刚刚调用了adjust()
:
7.adjust()
它会抛出错误:
Immutable value of type `Int` only has mutating members named adjust.
我不确定导致错误的原因是什么?有人可以帮我理解这个问题吗?
答案 0 :(得分:7)
adjust方法被标记为mutating意味着它改变了调用方法的东西。
7是文字,所以改变它的价值是没有意义的。文字不能变异。这就是为什么错误消息表明不可变的值不能被改变的原因。
相反,您可以对变量(可变)使用该方法:
var myNum = 7
myNum.adjust()
println(myNum) // 49
如果你在常量上尝试相同的事情,你会得到相同的错误信息,因为它也是不可变的:
let myNum2 = 7
myNum2.adjust() // Error: Immutable value of type 'Int' only has mutating members named 'adjust'