【发布时间】:2016-02-12 22:12:52
【问题描述】:
Swift 新手。不知道为什么编译器会给出以下代码的错误。:
func addNumbers(numbers: Int ...) -> Int {
var total : Int = 0
for number in numbers {
total += number
}
return total
}
func multiplyNumbers(numbers: Int ...) -> Int {
var total : Int = numbers [0]
for (index,number) in numbers.enumerate() {
if index == 0 {
continue
}
total *= number
}
return total
}
func mathOperation(mathFunction: (Int ...) -> Int, numbers: Int ...) -> Int {
return mathFunction(numbers)
}
错误:
错误:无法将“[Int]”类型的值转换为预期的参数类型 '诠释' 返回数学函数(数字)
【问题讨论】:
-
mathFunction: (Int ...)... 需要一个 singleInt类型的可变参数,而numbers是一个Int数组;例如,以下签名是有效的(但可能不是您想要的)func mathOperation(mathFunction: ([Int]) -> Int, numbers: Int ...) -> Int { ... }。这可能是出乎意料的,因为mathOperation中的numbers是可变参数,但这仅在调用函数时有效:可变参数不是真正的类型,因此一旦numbers输入“函数的实例” ,它是一个数组。 -
Swift varargs 不像在 Java 中那样容易互换,例如,您不能简单地将数组传入
标签: swift