Swift ジェネリクスとオーバーロード

汎用的な関数・メソッドを作りたい

汎用的とは?汎用的とは国語的には「広くいろいろな方面に用いること」のような意味ですが、この場合の汎用的は、「複数の種類の型の引数を受け取れる関数・メソッド」くらいの意味でしょうか。

sample1-1

func plus(_ x:Int,_ y:Int)->Int{
    return x+y
}

print(plus(1,1))
print(plus(1,12))
2
13

sample1-1はInt型の二つの引数x,yを受け取り、その和を返す関数plus()を定義しています。上記のようにx,yにInt型の引数が渡された場合その和を得ることができます。


sample1-2

func plus(_ x:Int,_ y:Int)->Int{
    return x+y
}

print(plus(1,1.2))
main.swift:7:14: error: cannot convert value of type 'Double' to expected argument type 'Int'
print(plus(1,1.2))
             ^~~
             Int(