我想制作一个可以采用可变数量参数的方法.有点像在javascript中我可以使用arguments函数内的关键字获取所有参数.我怎么能在Swift中做到这一点?
我的主要目的是允许所有重载的构造函数转到一个方法,即使它根本没有传递参数.
class Counter {
var count: Int = 0
func incrementBy(amount: Int, numberOfTimes: Int) {
count += amount * numberOfTimes
}
}
Run Code Online (Sandbox Code Playgroud)
Seb*_*dal 16
在Swift iBook中有一个例子,第17页:
func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
sumOf() // returns 0
sumOf(1,2) // returns 3
sumOf(42, 597, 12) // returns 651
Run Code Online (Sandbox Code Playgroud)
ric*_*ter 14
Varargs很棒,但它们并不是真正用于表示不同事物的可选参数,如Counter问题中的示例所示.但是,函数重载可能有点过分:它打破了函数定义与其真实实现之间的耦合.
您可能需要的是参数的默认值:
func incrementBy(amount: Int, numberOfTimes num: Int = 1) {
count += amount * num
}
Run Code Online (Sandbox Code Playgroud)
现在你将得到相同的行为调用incrementBy(2, numberOfTimes:1)或incrementBy(2)(递增2,一次).
具有默认值的参数必须位于func/method签名中,并且必须标记.这将在本书的函数参数名称下面的几个小节中讨论.
| 归档时间: |
|
| 查看次数: |
8384 次 |
| 最近记录: |