Swiftのメソッド(Methods)

Swiftのメソッド

メソッド(Methods)です。メソッドとは(基本的には)関数のことですが、型(クラスなど)が持っている内部関数のことを、特別にメソッドと呼びます。

ここでは、メソッドとは何か?から始めて、インスタンスメソッドと型メソッドとは?をそれぞれのページで紹介します。そこでは、メソッドの定義や具体的な使用例に関して詳しく説明していきます。

メソッド(Methods)は型(クラスなど)が持つ関数

メソッド(Methods)とは何でしょうか?一言でまとめれば、関数(functions)です。ただし、型(列挙型構造体、クラス)が持つ関数のことをメソッドと呼びます。

例えば、非常に簡単な例で関数とメソッドを比較すると、以下のようになります。

func hello() {
    print("関数です")
}

struct Greeting {
    func hello() {
        print("メソッドです")
    }
}

// 関数
hello()

// メソッド
let say = Greeting()
say.hello()

こんな感じで、関数とメソッドを定義できます。今、hello()というグローバル関数と、構造体Greeting内部にhello()というメソッドを定義しました。どちらも同じ名前で、使い方もほとんど一緒です。しかし、構造体(一般的には独自型)内部にあるhello()は、関数とは呼ばずにメソッドと呼びます。

メソッドは2種類。Swiftでは構造体と列挙型もメソッドを持てるのが特長

メソッドは2種類あります。プロパティ(properties)と同様に、インスタンスが持つメソッド(Instance Methods)型が持つメソッド(Type Methods)があります。プロパティを学んだ後であれば、この2つの違いはなんとなく分かると思います。

C言語やObject-Cとの大きな違いは、構造体と列挙型もメソッドを持てることです。C言語などでは、クラスが唯一メソッドを持てる独自型でした。そういう意味では、Swiftの構造体や列挙型は、かなり多機能であることが分かります。

ここでは、Swiftのインスタンスメソッド(instance methods)型(タイプ)メソッド(type methods)に関して、その定義から詳しい使い方までを説明していきます。