【发布时间】:2014-08-10 03:07:52
【问题描述】:
假设我们有一个本地类:
class Local {
static inline public var logLevel:Int = 3;
}
还有一些功能:
Tool.debug(s:String) // compiled if logLevel >= 0
Tool.moreinfo(s:String)// compiled if logLevel >= 1
Tool.info(s:String) // compiled if logLevel >= 2
Tool.trace(s:String) // compiled if logLevel >= 3
Tool.warn(s:String) // compiled if logLevel >= 4
Tool.err(s:String) // compiled if logLevel >= 5
我们可以在代码中使用 -D 和一些 #if 来实现这一点。
然而,这意味着一直在修改 hxml 文件。即使它只是为了一个值,这对我来说并不理想,因为我的所有配置都位于我的 Local 类中。
如果我们用简单的 if () 来测试这个值,那么代码会随着所有的 if 和字符串变得更大,即使它从未使用过(因为 logLevel 的意思是“常量”)。
是否可以使用宏来解决这两个问题?
【问题讨论】:
-
最好将配置细节与代码分开存储。宏函数可以读取这些文件,并更改编译代码的细节。