在目标C中,我曾经使用#defines定义常量,以快速,显式地定义用于本地化的字符串并保持代码更简洁的一种方式。
例如:
#define DefineStringKey(x) static NSString *const x = @#x
这将允许我定义与字符串相同名称的常量
因此DefineStringKey(@"IntroTitle");
会创建一个名为 IntroTitle 的constnat,其值应为代码中的 IntroTitle (自动填充和全部)。
我有一个想法,我也许可以在Swift中做同样的事情,但是我似乎无法使用typealias或闭包来正确获取语法。
输入别名
typealias DefineStringKey:(x:String) = let x:String = x
关闭
let DefineStringKey:(String) = (String) -> () {
(x:String) in
let x:(String) = x
}
很明显,我给出的两个示例都是错误的。这是我可以通过另一种方法在Swift中完成的事情还是我的语法刚刚结束。
已编辑以添加用例。
答案 0 :(得分:0)
不幸的是, Swift 没有宏,因此,如果不写出let myConstant = ...
,就无法定义常量(或变量)。您可以做的是使用闭包定义一个常量,您可以在闭包的内部范围内使用它:
func defineStringKey(_ key: String, handler: (String) -> Void) {
handler(key)
}
将其放置在全局范围内的任何位置,您可以像这样使用它:
defineStringKey("IntroTitle") { IntroTitle in
print(IntroTitle)
}
将打印出IntroTitle
。不过,这不是很有用,我不建议您使用它。您必须迅速输入明确的变量定义。