mse*_*ore 3 xcode preprocessor compiler-directives swift
在Swift中(使用Xcode)使用#if,#endif(如果使用Xcode)会切入操作流程,则会产生错误。该屏幕截图说明了一切:
有谁知道一种解决方案,可以使此示例正常工作,而无需重复整个代码块两次?很容易出现整个块可能很大的情况。
编辑:我的示例有点太简单了。这是一个新示例,其中“ else if”取决于相同的定义(DEBUG)。“ else if”也必须在#if和#endif之内。其他样本可能比这复杂得多。
理想情况下,请#if尽可能限制使用。使用预处理程序指令总是有点代码味道。在这种情况下,您可以简单地使用布尔变量:
#if DEBUG
let debug = true
#else
let debug = false
#endif
Run Code Online (Sandbox Code Playgroud)
然后只需使用变量:
var a = 0
var b = 0
...
else if debug && a == b {
}
Run Code Online (Sandbox Code Playgroud)
在发布模式下,代码将变得不可访问,并且优化器仍将删除它。
凭空想象,我们可以找到其他解决方案,例如,可以将检查移至一个函数:
func isDebugCheck(a: Int, b: Int) -> Bool {
#if DEBUG
return a == b
#else
return false
#endif
}
Run Code Online (Sandbox Code Playgroud)
或者我们可以将整个代码移到一个单独的函数中,并替换if-else为return(或continue,取决于您的需要),例如:
if a == 7 {
...
return
}
#if DEBUG
if a == b {
return
}
#endif
if ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |