You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动