ID非公開

2020/10/30 15:40

11回答

Swift初心者なのですが、self について質問があります。

Swift初心者なのですが、self について質問があります。 ①struct Somestruct { let value = 123 func printvalue (){ print ( value ) } } と ②struct Somestruct { let value = 123 func printvalue (){ print ( self.value ) } } ①と②では何か違いがあるでしょうか?

ベストアンサー

1

クラス、構造体の定義の中で、メソッド内に使われるプロパティ名は、selfを省略できる。 そういうSwiftの文法に従って、①はselfを省略しています。それ以外の違いはありません。 ならば、最初からselfなんて付けなければいいじゃないか?という話になりますが、それはselfを省略できないケースが出てくるので、「self + プロパティ名」が基本となります。 Selfを省略できないケースのひとつに、ローカル変数名のバッティングというものがあります。 struct SomeStruct { var value = 12 mutating func add(value: Int) { self.value += value } } 上のaddは、プロパティvalueに引数の値を足すだけのメソッドですが、プロパティ名と引数名がバッティングしてしまうので、self.valueと記述する必要が出てきます。

1人がナイス!しています