Swift

[Swift]initの中でfactory methodで生成したインスタンスを返す

*コメント欄にてloveeさんから補足を頂いているのでご覧ください!

実行コード
https://iswift.org/playground?BJSCvA&v=3

struct User {
    let id: Int
}

struct UserFactory {
    static func make(id: Int) -> User {
        return User.init(id: id)
    }
}

extension User {
    init() {
        self = UserFactory.make(id: 999)
    }
}


let user1 = User(id: 100)
let user2 = UserFactory.make(id: 101)
let user3 = User()

print(user1.id)
print(user2.id)
print(user3.id)

self = instance
で、instanceを返す事ができる。出来ないと思ってたわ…。