Swift中传递可变参数(variadic parameter)至同类型参数函数报错问题咨询
Swift中传递可变参数(variadic parameter)至同类型参数函数报错问题咨询
嘿,我来帮你捋清楚这个问题!其实这个报错的原因很好理解——Swift里的可变参数在函数内部会被自动转换成数组类型,哪怕你定义参数时写的是Int...。
比如在你的myFunctionB里,虽然参数声明是integers: Int...,但当函数执行时,integers实际上已经是一个[Int]类型的数组了。而myFunctionA期待的是直接传入多个独立的Int值(也就是可变参数的原始形式),你直接把数组传过去,Swift自然会判定类型不匹配。
那怎么解决呢?很简单,用**扩展运算符...**把数组重新展开成可变参数形式就行,修改后的代码如下:
func myFunctionA(integers: Int...) { // 这里可以正常使用integers数组 print("Function A 收到的参数:\(integers)") } func myFunctionB(integers: Int...) { // 使用...运算符将数组展开为可变参数传递 myFunctionA(integers: integers...) } // 测试调用 myFunctionB(integers: 1, 2, 3) // 输出:Function A 收到的参数:[1, 2, 3]
再补充个小细节:可变参数其实是Swift提供的语法糖,让你不用手动打包数组,就能直接传入多个同类型值。但在函数内部它始终是以数组的形式存在的,所以传递给其他需要可变参数的函数时,必须手动用...把数组“拆”回可变参数的形式。
备注:内容来源于stack exchange,提问作者markb




