Итак, как вы определяете общие константы класса в Swift?Как определить статическую константу в родовом классе в swift?
Проблема
Для "нормального" класса вы можете определить их как это:
class C {
static let k = 1
}
let a = C.k // 1
Но если вы делаете то же самое на общий класс:
class C<T> {
static let k = 1
}
Вы получить следующую ошибку при составлении:
Статические сохраненные свойства пока не поддерживаются в универсальных типах
Так как решить эту проблему?
Мое текущее решение
Прямо сейчас, я использую struct
решить эту проблему:
struct CConstant {
static let K = 1
}
Это не определен в рамках общего класса, но это работает для меня. У вас есть лучшее решение?
-
пс: это мой первый вопрос здесь, так что, пожалуйста, помогите мне улучшить этот вопрос, если вы думаете, что нужно =)
Спасибо, что ответили! Ваше предложение, похоже, находится в одном направлении с моим текущим решением. Я просто должен указать аксессоров в зависимости от контекста. Знаете ли вы, почему «Статические сохраненные свойства еще не поддерживаются в общих типах»? – ghashi
Я думаю, что они еще не поддерживаются, потому что вы не можете использовать общий тип без указания его параметров типа. И что 'SomeClass .someConstant' будет выглядеть уродливым, если вы просто хотите получить доступ к статическому свойству. Чтобы заставить его работать без указания параметров типа, необходимо реализовать это в компиляторе, и я думаю, что это не приоритетная задача для команды Swift. –
mixel