The Swift Programming Language年,它说:

函数还可以接受数量可变的参数,将它们收集到一个数组中.

  func sumOf(numbers: Int...) -> Int {
      ...
  }

当我用逗号分隔的数字列表(`sumOf(1,2,3,4))调用这样一个函数时,它们在函数中作为数组可用.

问题:如果我已经有了一个要传递给这个函数的数字数组,该怎么办?

let numbers = [1, 2, 3, 4]
sumOf(numbers)

此操作失败,出现编译器错误"找不到接受所提供参数的"\uuu转换"的重载".有没有办法把一个现有的数组变成一个元素列表,我可以把它传递给一个变量函数?

推荐答案

Splatting is not in the language yet,由开发人员确认.目前的解决方法是使用重载,如果无法添加重载,则使用等待.

Swift相关问答推荐

复选标记动画的问题

如何在一个角色隔离类上编写自定义==实现?

启用完整并发判断以及如何解决警告

SwiftUI状态更新

对多个项目的数组进行排序

带DispatchSourceTimer的定时器

如何在SwiftUI中做出适当的曲线?

SwiftUI-如何使用剩余时间制作倒计时计时器

如何使用Duration.TimeFormatStyle以h m s格式快速格式化时间

Xcode 15 Beta中如何使用@Observable?

在 Swift 5.7 中使用协议作为类型时什么时候需要写 `any`

如何让默认函数参数引用另一个函数参数?

swiftui中服务端图片如何设计view并赋予rotationEffect?

为什么 String.contains 在我导入 Foundation 时表现不同?

故事板未在助手中显示视图控制器

单元测试和私有变量

如何在 iOS Swift 中进行多线程、并发或并行?

由于编译器中的内部保护级别,无法访问框架 init 中的公共 struct

DispatchQueue:不能在非主线程上使用 asCopy = NO 调用

UILabel 文本不换行