带有args的Swift函数…使用args传递给另一个函数

前端之家收集整理的这篇文章主要介绍了带有args的Swift函数…使用args传递给另一个函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的问题.我尝试在很多博客搜索这个问题但是所有网站都返回了如何快速工作的功能,但我需要这个案例.

我的自定义功能是:

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 = "%@:  %f\n".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)
    }
}
原文链接:https://www.f2er.com/swift/319999.html

猜你在找的Swift相关文章