# メソッド

メソッドとは、型に紐づいた関数のことです。Swiftでは、クラス、構造体、列挙型はメソッドを定義することができます。

# メソッドの定義方法

メソッドの定義は、型の内部で、func キーワードを使用して定義することができます。

struct MyStruct {
  func メソッド名(引数) -> 戻り値の型 {
    // 処理の記述
  }
}

次の例では、構造体に say メソッドを定義しています。引数と返り値にString型を許容しています。

struct Person {
  func say(text: String) -> Void {
    print(text)
  }
}

let person1 = Person()
person1.say(text: "Hello") // Hello

# インスタンスメソッド

インスタンスメソッドとは、型のインスタンスに紐づくメソッドです。インスタンス化することによって使用することができます。

struct Person {
  func hello() -> Void {
    print("Hello")
  }
}

let person1 = Person()
person1.hello() // Hello

インスタンス化せずに、使用すると、コンパイラはエラーを出力します。

struct Person {
  func hello() -> Void {
    print("Hello")
  }
}

Person.hello()

/* 実行結果 */
// error: instance member 'hello' cannot be used on type 'Person'; did you mean to use a value of this type instead?
// Person.hello()

# タイプメソッド

タイプメソッドとは、型に紐づくメソッドのことです。インスタンスが異なっても共通の処理をしたいときに使用します。

タイプメソッドは、先頭に static キーワードをつけます。

struct Person {
  static func hello() -> Void {
    print("Hello")
  }
}

Person.hello() // Hello