我不确定这是否可行,但我想我以前见过它。
我正在整个应用程序中对表单对象执行一些验证,我想要一个集中,可重用的方法来执行此操作。我想出了以下内容:
class RGOValidatedObject<T> {
var validationPredicate: ((RGOValidatedObject<T>) -> Bool)?
var isValid: Bool {
return true
}
}
我希望能够访问T的属性和方法,就像我直接对其进行子类化,而不是向RGOValidatedObject
添加属性以返回T的值。请考虑以下内容:
RGOValidatedObject<String>().substringToIndex(1)
这就是我在RGOValidatedObject
上访问T的属性和方法的意思,就像我只是将T子类化。
这可能吗?如果是这样,我该怎么做呢?我是Swift泛型概念的新手,但就像它们的外观一样。
答案 0 :(得分:2)
不,没有&#34;解除&#34;以这种方式转发方法的语法(尽管将来有类似功能的讨论)。您需要添加let value: T
属性才能访问它。
此问题的一个更常见的版本是构建Observable<T>
。你无法在Swift中完全透明,这样你就可以在它上面调用T
方法(用KVO魔法的方式)。它必须是明确的。