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 に答える