Mid*_* MP 2 ios swift swift-extensions
我现在正在学习Swift语言.
在Apple的文档中,我看到了一个扩展示例:
extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() {
self += 42
}
}
7.simpleDescription
Run Code Online (Sandbox Code Playgroud)
所以我就是adjust()这样说的:
7.adjust()
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误:
Immutable value of type `Int` only has mutating members named adjust.
Run Code Online (Sandbox Code Playgroud)

我不确定导致错误的原因是什么?任何人都可以帮我理解这个问题吗?
adjust方法被标记为mutating意味着它改变了调用方法的东西.
7是文字,所以改变它的价值是没有意义的.文字不能变异.这就是为什么错误消息表明不可变的值不能被改变的原因.
相反,您可以在变量上使用该方法(可变):
var myNum = 7
myNum.adjust()
println(myNum) // 49
Run Code Online (Sandbox Code Playgroud)
如果你在常量上尝试相同的东西,你会得到相同的错误消息,因为它也是不可变的:
let myNum2 = 7
myNum2.adjust() // Error: Immutable value of type 'Int' only has mutating members named 'adjust'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |