iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

Swift5.4 つまみ食い【SR-10069編】

ということで今回も Swift5.4 をちょろっと見てみます👀

SR-10069 requested the ability to overload functions in local contexts, which in practice means nested functions can now be overloaded so that Swift chooses which one to run based on the types that are used.

参照: https://www.hackingwithswift.com/articles/228/whats-new-in-swift-5-4

Swift5.4 からローカル関数内のオーバロードがサポートされたようです。

今までも関数外でのオーバーロードについては下記のようにサポートされてきましたが、関数内でのオーバーロードはサポートされていませんでした。

class Hoge {
    var i: Int = 0
    var s: String = ""
    var b: Bool = false

    func update(value: Int) {
        i = value
    }

    func update(value: String) {
        s = value
    }

    func update(value: Bool) {
        b = value
    }
}

これが、Swift5.4 からは関数内でもオーバーロードを記述することができるようになります。

struct Butter { }
struct Flour { }
struct Sugar { }

func makeCookies() {
    func add(item: Butter) {
        print("Adding butter…")
    }

    func add(item: Flour) {
        print("Adding flour…")
    }

    func add(item: Sugar) {
        print("Adding sugar…")
    }

    add(item: Butter())
    add(item: Flour())
    add(item: Sugar())
}

という感じで本日も以上になります🍺

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com