Создание протокола Swift singleton [duplicate]

Мое обходное решение:

function add(a, b, precision) {
    var x = Math.pow(10, precision || 2);
    return (Math.round(a * x) + Math.round(b * x)) / x;
}

precision относится к числу цифр, которые вы хотите сохранить после десятичной точки во время добавления.

1
задан rmaddy 2 March 2016 в 21:13
поделиться

1 ответ

Сам протокол не может быть одиночным. Это не имеет никакого смысла. Протокол - это то, что соответствует другим типам.

Но если вы хотите объявить, что все, что соответствует Singleton, следуют некоторому правилу, например, предлагая sharedInstance, тогда все в порядке. Ваш синтаксис просто неверен. Вы должны использовать var с get, а не let.

protocol Singleton {
    static var sharedInstance: Self { get }
}

В принципе, вы можете автоматически создать этот экземпляр, предоставив реализацию по умолчанию, но Swift не позволяет вам для создания хранилища в расширении. Хотя можно было бы снять это с каким-то глобальным кешем, трудно себе представить, что это стоит того.

3
ответ дан Rob Napier 5 September 2018 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: