Objective-C имеет своеобразную, но очень полезную возможность сделать инициализатор возвратом другого экземпляра, чем тот, на который вызывается инициализатор. Вы можете прочитать об этом here.Можете ли вы вернуть другой экземпляр из конструктора Swift?
Это замечательно для таких вещей, как кластер классов, но даже для простых вещей, таких как обеспечение того, чтобы конкретные экземпляры были возвращены на основе определенных условий (то есть при создании класса учетной записи с номером учетной записи всегда будет возвращен один и тот же экземпляр класса Account для это число.)
Однако в нашем приложении мы используем Swift, но на этом языке я не вижу таких положений. Что-то подобное существует?
Обычно мы просто создаем метод класса для возврата интересующего нас экземпляра, но пока мы владеем рассматриваемым классом, мы не являемся владельцем вызывающего кода, который использует стандартный синтаксис инициализатора. например
let foo = OurClass()
Мы хотим контролировать, какой экземпляр передается обратно к ним на основе некоторых внешних условий (опущено для ясности здесь.)
Так же Swift есть любые такие механизмы?
В настоящее время это невозможно в Swift, вы не можете создавать и возвращать экземпляр (подкласс) в методе init, если это то, что вы ищете. - Я * думаю *, который обсуждался в быстрой эволюции, но я не знаю, каков текущий статус. –
Нет, это не то, что мы делаем. Мы просто возвращаем другой экземпляр класса (но того же типа), который вызван против init. Я думаю, что решение состоит в том, чтобы погрузиться в Objective-C, а затем вернуться обратно к быстрому. Дала бы нам то, что мы хотим, хотя и с любопытством в три левых к правильному. – MarqueIV
Вот одна тема, о которой я думал: https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/003192.html. - В настоящее время вы не можете вернуть другой экземпляр (насколько мне известно), подкласс или нет. –