如何使用Typealias或闭包在swift中定义带有名称参数的常量?

如何使用Typealias或闭包在swift中定义带有名称参数的常量?,swift,Swift,在Objective C中,我使用#defines来定义常量,这是一种快速明确地定义本地化字符串的方法,并使代码更干净 例如: #define DefineStringKey(x) static NSString *const x = @#x 这将允许我定义与字符串命名相同的常量 所以DefineStringKey(@“IntroTitle”)将创建一个名为IntroTitle的常量,其值为IntroTitle,我可以在代码中引用它(autocomplete和all) 我有一个想法,我可能能够

在Objective C中,我使用#defines来定义常量,这是一种快速明确地定义本地化字符串的方法,并使代码更干净

例如:

#define DefineStringKey(x) static NSString *const x = @#x
这将允许我定义与字符串命名相同的常量 所以
DefineStringKey(@“IntroTitle”)
将创建一个名为IntroTitle的常量,其值为IntroTitle,我可以在代码中引用它(autocomplete和all)

我有一个想法,我可能能够在Swift中做同样的事情,但我似乎无法使用typealias或闭包获得正确的语法

类型别名

typealias DefineStringKey:(x:String) = let x:String = x 
关闭

let DefineStringKey:(String) = (String) -> () {
   (x:String) in
   let x:(String) = x
}
显然,我给出的两个例子都不正确。这是我可以通过另一种方法在Swift中实现的,还是我的语法刚刚关闭


编辑以添加用例。

不幸的是,Swift没有宏,因此如果不写出
let myConstant=…
,就无法定义常量(或变量)。您可以使用闭包定义一个常数,该常数可以在闭包的内部范围内使用:

func defineStringKey(key:String,handler:(String)->Void){
处理程序(键)
}
将其放在全局范围内的任何位置,您可以这样使用它:

defineStringKey(“IntroTitle”){IntroTitle中的
印刷品(标题)
}

打印出
IntroTitle
。但这不是很有用,我不建议使用它。在swift中,您必须显式地键入变量定义。

不幸的是,swift没有宏,因此如果不写出
让myConstant=…
就无法定义常量(或变量)。您可以使用闭包定义一个常数,该常数可以在闭包的内部范围内使用:

func defineStringKey(key:String,handler:(String)->Void){
处理程序(键)
}
将其放在全局范围内的任何位置,您可以这样使用它:

defineStringKey(“IntroTitle”){IntroTitle中的
印刷品(标题)
}

打印出
IntroTitle
。但这不是很有用,我不建议使用它。在swift中,您必须显式键入变量定义。

\define
是预编译指令。您所有的Swift尝试都是在运行时进行的。为什么不给出一个清晰的例子来说明如何使用这些常量呢。然后有人可能会提供一个很好的解决方案。不清楚你想要实现什么。什么是
?你想要什么?如果它是一个简单的costant值,为什么需要
typealias
?无论如何,
closures
works@rmaddy根据您的建议添加了一个示例。@Andrew21111“key”在此上下文中是我要设置的stringName和值。我更改了帖子以反映我在Objective C示例中所写的内容。
#define
是一个预编译指令。您所有的Swift尝试都是在运行时进行的。为什么不给出一个清晰的例子来说明如何使用这些常量呢。然后有人可能会提供一个很好的解决方案。不清楚你想要实现什么。什么是
?你想要什么?如果它是一个简单的costant值,为什么需要
typealias
?无论如何,
closures
works@rmaddy根据您的建议添加了一个示例。@Andrew21111“key”在此上下文中是我要设置的stringName和值。我更改了帖子以反映我在Objective C示例中所写的内容。感谢您的解释!我将明确地键入所有内容,以便在新版本中保留相同的功能。感谢您的解释!我将明确地键入所有内容,以便在新版本中保留相同的功能。