Я не уверен, что это возможно или нет, но я думаю Я видел это раньше.Свойства и методы доступа <T> от swift generic
Я выполняю некоторую проверку на объектах формы во всем приложении, и я хочу, чтобы это было сделано в качестве центрального, многоразового использования. Я придумал следующее:
class RGOValidatedObject<T> {
var validationPredicate: ((RGOValidatedObject<T>) -> Bool)?
var isValid: Bool {
return true
}
}
Я хочу, чтобы иметь возможность получить доступ к свойствам и методам T, как если бы я был подклассов непосредственно, а не добавлять свойство RGOValidatedObject
возвращать значение T. Рассмотрим следующий пример:
RGOValidatedObject<String>().substringToIndex(1)
Это то, что я имею в виду свойства и методы доступа T, на RGOValidatedObject
, почти как если бы я только подклассы Т.
возможно ли это? Если да, то как мне это сделать? Я новичок в концепции дженериков Swift, но, как и внешний вид.
Какой результат вы ожидаете от этой строки 'RGOValidatedObject() .substringToIndex (1)'? –
Я бы ожидал, что значение индекса массива вне диапазона, но это не так. Это скорее случай, если компилятор распознает метод 'String' из' RGOValidatedObject'? –
Похоже, вам нужно добавить свойство владельца стоимости типа 'T' в порядок. Вы получите нечто очень похожее на 'Необязательный' структура перечисления. Вероятно, знание о том, как пересылка реализации типа «Необязательный» может помочь вам в решении вашей проблемы. Вы можете попытаться исследовать его, скопив быстрый исходный код –