今回は、Swiftの self の使い方を初心者向けに解説してました!
Swiftでは、selfは自分自身(=インスタンス自身)を指すキーワードです。
クラス・構造体・列挙型などの中で、自分のプロパティやメソッドにアクセスしたいときに使います。
基本的な使い方
struct User {
var name: String
func greet() {
print("こんにちは、\(self.name)さん!")
}
}
ここでのself.nameは「このインスタンスのnameプロパティ」を意味しています。
また、selfは省略可能なので、下のように書くこともできます
print("こんにちは、\(name)さん!")
では、いつselfが必要になる場合になるの?
引数とプロパティの名前が同じとき
struct User {
var name: String
init(name: String) {
self.name = name
}
}
上のように、引数とプロパティの名前が同じだと、Swiftはどちらを指しているか分からなくなります。
このとき、self.nameと書くことで「自分自身のプロパティ」だと明示できます。
クラス内で self を使うときの例
class Counter {
var count = 0
func increment() {
self.count += 1
}
}
こちらもselfは省略できますが、メソッド内で他の変数と区別したいときに使うことがあります。
クロージャ内での self
クラスで非同期処理やクロージャを使うときには、明示的にselfを書く必要があることが多いです。
class Timer {
var count = 0
func startTimer() {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.count += 1
print("カウント: \(self.count)")
}
}
}
最後に
selfを書くことで、クラスのプロパティやメソッドを使っていると明確になると思います!
ぜひ参考にしてみてください!🤌