Mustatingとは何ですか.
mutatingについてのコメントを読んで整理してみました
ソース:docs.swift
Modifying Value from Within Instance Methods
define mutable
変わりやすいとは「変わりやすい」という意味です
Structures and enumerations are value types. By default, the properties of a value type can't be modified from within its instance methods.
→StructureとEnumerationは値タイプです.デフォルトでは、instanceメソッドで値タイプのプロパティを変更することはできません.
However, if you need to modify the properties of your structure or enumeration within a particular method, you can opt in to mutating behavior for the method. The method can then mutate ( that is, change) its properties from within the method, and any changes that it makes are written back to the original structure when the method ends. The method can also assign a completely new instance to its implicit self
property, and this new instance will replace the existing one when the method ends.
→ただし、特定のメソッド内で構造または計算のプロパティを変更する必要がある場合は、そのメソッドの動作を変更できます.その後、メソッドはメソッドでプロパティを変更(変更)できます.メソッドが終了すると、すべての変更が元の構造に再書き込まれます.メソッドは、メソッドの終了時に既存のインスタンスを置き換える暗黙的な自己属性に完全に新しいインスタンスを割り当てることもできます.
... これは何の話ですか.だからグラウンドを開けた
デフォルトでは、instanceメソッドで値タイプのプロパティを変更することはできません.
そうですね.var
であっても、インスタンスメソッドでは修正できません.
エラー文の詳細表示
Left side of mutating operator isn't mutable. += オペレータの左の部分は変わらないそうです.
fixで変更しました
Usage
顧客向けマルチステーションメソッド
Mutating methods for enumerations can set the implicit self
parameter to be a different case from the same enumeration.enum TrsStateSwitch {
case off, low, high
mutating func next() {
switch self {
case .off:
self = .low
case .low:
self = .high
case .high:
self = .off
}
}
}
var ovenLight = TriStateSwitch.low
ovenLight.next()
// ovenLight is now equal to .high
ovenLight.next()
// ovenLight is now equal to .off
整理する
メソッドの前のmutating
.valuetype instance(e.g Structure,Enumeration)メソッドを使用してインスタンス属性値を変更します.
Reference
この問題について(Mustatingとは何ですか.), 我々は、より多くの情報をここで見つけました
https://velog.io/@heunb/Mutating-이-뭔데
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
enum TrsStateSwitch {
case off, low, high
mutating func next() {
switch self {
case .off:
self = .low
case .low:
self = .high
case .high:
self = .off
}
}
}
var ovenLight = TriStateSwitch.low
ovenLight.next()
// ovenLight is now equal to .high
ovenLight.next()
// ovenLight is now equal to .off
メソッドの前の
mutating
.valuetype instance(e.g Structure,Enumeration)メソッドを使用してインスタンス属性値を変更します.Reference
この問題について(Mustatingとは何ですか.), 我々は、より多くの情報をここで見つけました https://velog.io/@heunb/Mutating-이-뭔데テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol