swift中int...与[int]的区别

//第一段
func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true
        }
    }
    return false
}
func lessThanTen(number: Int) -> Bool {
    return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, condition: lessThanTen)

//第二段
func sumOf(numbers: Int...) -> Int {
    var sum = 0
    for number in numbers {
        sum += number
    }
    return sum
}
sumOf()
sumOf(42, 597, 12)

第一段的list和第二段numbers中,为什么一个是[Int]一个是Int...呢?playground中试过不能互换。。

阅读 6.2k
3 个回答

[Int]

表示该参数是数组类型。

Int...

表示该参数是可变参数(Variadic Parameters)。
A variadic parameter accepts zero or more values of a specified type.
一个可变参数可以接受零个或多个值。

区别

在函数体里,可变参数是当做数组类型在使用的,也就是说,两者无异,区别在于,调用函数的时候。
图片描述

将可变参数作为参数的函数可以接受零个值,即无参数传入,也能调用;而在调用将数组类型参数作为参数的函数室,必须有相应的参数传入。

The Swift Programming Language, Funtions, Varidic Parameter
https://developer.apple.com/library/prerelease/ios/documentation/Swift...

The Swift Programming Language, Array Type
https://developer.apple.com/library/prerelease/ios/documentation/Swift...

[Int] 是 Int泛型数组

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进