【发布时间】:2025-12-05 09:40:01
【问题描述】:
在 Objective C 中,我曾经使用 #defines 来定义常量,作为一种快速明确地定义本地化字符串并保持代码更简洁的方法。
例如:
#define DefineStringKey(x) static NSString *const x = @#x
这将让我在与字符串命名相同的常量中定义
所以DefineStringKey(@"IntroTitle"); 将创建一个名为 IntroTitle 的常量,其值 IntroTitle 我可以在我的代码中引用(自动完成和所有)。
我有一个想法,我可以在 Swift 中做同样的事情,但我似乎无法使用 typealias 或闭包来获得正确的语法。
类型别名
typealias DefineStringKey:(x:String) = let x:String = x
关闭
let DefineStringKey:(String) = (String) -> () {
(x:String) in
let x:(String) = x
}
显然我给出的两个例子都不正确。这是我可以通过另一种方法在 Swift 中做的事情,还是我的语法刚刚结束。
编辑添加了一个用例。
【问题讨论】:
-
#define是一个预编译器指令。你所有的 Swift 尝试都是运行时的。为什么不展示一个清楚的例子来说明您打算如何使用这些常量。那么有人可能会提供一个好的解决方案。 -
目前还不清楚您要达到的目标。
key是什么?你想要什么 ?如果它是一个简单的常数值,为什么需要typealias?无论如何,closures不是这样工作的 -
@rmaddy 根据您的建议添加了一个示例。
-
@Andrew21111 'key' 在这种情况下是我想设置的字符串名称和值。我更改了帖子以反映我在 Objective C 示例中所写的内容。
标签: swift