带有args的Swift函数…使用args传递给另一个函数
发布时间:2020-12-14 05:44:50 所属栏目:百科 来源:网络整理
导读:我有一个简单的问题.我尝试在很多博客中搜索这个问题但是所有网站都返回了如何快速工作的功能,但我需要这个案例. 我的自定义功能是: func getLocalizeWithParams(args:CVarArgType...)-String { return NSString.localizedStringWithFormat(self,args); //e
我有一个简单的问题.我尝试在很多博客中搜索这个问题但是所有网站都返回了如何快速工作的功能,但我需要这个案例.
我的自定义功能是: func getLocalizeWithParams(args:CVarArgType...)->String { return NSString.localizedStringWithFormat(self,args); //error: Expected expression in list of expressions } 我如何通过args将我的args传递给其他系统函数? 谢谢你.
与(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: $0) } as String } } withVaList()从给定的参数列表创建一个CVaListPointer 示例(来自NSString文档): let msg = "%@: %fn".getLocalizeWithParams("Cost",1234.56) print(msg) 美国语言环境的输出: Cost: 1,234.560000 德语区域设置的输出: Cost: 1.234,560000 更新:从Swift 3/4开始,可以将参数传递给 String(format: String,locale: Locale?,arguments: [CVarArg]) 直: extension String { func getLocalizeWithParams(_ args : CVarArg...) -> String { return String(format: self,locale: .current,arguments: args) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |