2

我现在正在学习 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.

快速错误

我不确定是什么导致了错误?谁能帮我理解这个问题?

4

1 回答 1

7

调整方法被标记为变异,这意味着它改变了方法被调用的东西。

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'
于 2014-12-20T05:48:18.330 回答