我的自定义功能是:
func getLocalizeWithParams(args:CVarargType...)->String { return Nsstring.localizedStringWithFormat(self,args); //error: Expected Expression in List of Expressions}
谢谢你.
与(Objective-)C类似,您无法传递变量参数列表直接到另一个功能.您必须创建一个CVaListPointer
(Swift相当于C中的va_List)并调用一个函数
采用CVaListPointer参数.
所以这可能是你正在寻找的:
extension String { func getLocalizeWithParams(args : CVarargType...) -> String { return withVaList(args) { Nsstring(format: self,locale: NSLocale.currentLocale(),arguments:let msg = "%@: %f\n".getLocalizeWithParams("Cost",1234.56)print(msg)) } as String }}
withVaList()从给定的参数列表创建一个CVaListPointer
并使用此指针作为参数调用闭包.
示例(来自Nsstring文档):
Cost: 1,234.560000
美国语言环境的输出:
Cost: 1.234,560000
德语区域设置的输出:
String(format: String,locale: Locale?,arguments: [CVararg])
更新:从Swift 3/4开始,可以将参数传递给
extension String { func getLocalizeWithParams(_ args : CVararg...) -> String { return String(format: self,locale: .current,arguments: args) }}
直:
总结以上是内存溢出为你收集整理的带有args的Swift函数…使用args传递给另一个函数全部内容,希望文章能够帮你解决带有args的Swift函数…使用args传递给另一个函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)