Swift 中的编译时条件协议一致性
Compile-time conditional protocol conformance in Swift
我有一个 Swift class ,在特定的编译时条件下,应该实现特定的协议。我希望条件复杂化 #if
检查会起作用,像这样:
class MyClass
#if SOME_COMPILE_TIME_CHECK
: SomeProtocol
#endif
{
// ...
#if SOME_COMPILE_TIME_CHECK
func someMethodToImplementSomeProtocol() { }
#endif
}
这不起作用。编译器尝试将每个条件块编译为一系列语句。但是块 : SomeProtocol
不会解析为一系列语句。
还有其他表达方式吗?例如,是否有语句级的方式来表达“MyClass
implements SomeProtocol
”?
将其放在扩展名中:
#if SOME_COMPILE_TIME_CHECK
extension MyClass : SomeProtocol {
func someMethodToImplementSomeProtocol() { }
}
#endif
我有一个 Swift class ,在特定的编译时条件下,应该实现特定的协议。我希望条件复杂化 #if
检查会起作用,像这样:
class MyClass
#if SOME_COMPILE_TIME_CHECK
: SomeProtocol
#endif
{
// ...
#if SOME_COMPILE_TIME_CHECK
func someMethodToImplementSomeProtocol() { }
#endif
}
这不起作用。编译器尝试将每个条件块编译为一系列语句。但是块 : SomeProtocol
不会解析为一系列语句。
还有其他表达方式吗?例如,是否有语句级的方式来表达“MyClass
implements SomeProtocol
”?
将其放在扩展名中:
#if SOME_COMPILE_TIME_CHECK
extension MyClass : SomeProtocol {
func someMethodToImplementSomeProtocol() { }
}
#endif