Swiftでももちろんメソッドのオーバーロード(多重定義)ができるよ。
Swiftでメソッドをオーバーロードする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Deal { func sum (price: Int) -> Int { return price; } func sum (price: Int, tax: Double) -> Int { return Int(Double(price) * tax); } func sum (price: Int, tax: Double, postage: Int) -> Int { return Int(Double(price) * tax + Double(postage)); } } let deal = Deal() print(deal.sum(price: 1000)) // 1000 print(deal.sum(price: 1000, tax: 1.08)) // 1080 print(deal.sum(price: 1000, tax: 1.08, postage: 300)) // 1380 |
こんな感じで引数を変えてやれば、メソッドのオーバーロードができるよ。
おまけ: 戻り値でもオーバーロードできる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class Deal { func sum (price: Int) -> Int { return price; } func sum (price: Int) -> String { return String(price) + "円"; } } let deal = Deal() let price: Int = deal.sum(price: 100) let priceStr: String = deal.sum(price: 100) print(price) // 100 print(priceStr) // "100円" |
戻り値でもオーバーロードできるけど、その際は price: Int, price: String みたいにしっかりと型を指定してあげないとエラーになるよ。