技術ブログ

プログラミング、IT関連の記事中心

オーバーロード【Swift】

◾️オーバーロード

オーバーロードとは、関数名は同じだが、引数や戻り値が違う関数を定義する事である。
以下に一例を記載する。(以下の例では、引数の型が相違する為、エラーにならない)

(例)

func funcA(sample:String){
    // 関数の中の処理
}
func funcA(sample:Int){
    // 関数の中の処理
}

この様に定義する事で、引数が文字列の場合は上の関数の処理を実行、引数が数値の場合は下の関数の処理を実行という様な分け方もできる。
しかし、以下の様に関数名、引数が同じで戻り値の型のみ相違する場合には注意が必要である。

(例)

func funcA(sample:String) -> String{
    // 関数の中の処理
    return "戻り値"
}
func funcA(sample:String) -> Int{
    // 関数の中の処理
    return 0
}

この場合、関数の呼び出しは同じになる為、受け取った後、データ型を明記した変数や定数に設定する必要がある。

(例)

let str :String = funcA(sample:"引数")
→上のメソッドが実行される。(戻り値の型がStringの方)

let num :Int = funcA(sample:"引数")
→下のメソッドが実行される。(戻り値の型がIntの方)

funcA(sample:"引数")
→エラーになる。