8.2.4 函数参数
函数参数使用 Pascal 表示法定义,即 name: type。参数用逗号隔开。每个参数必须显式指定其类型。
fun powerOf(number: Int, exponent: Int): Int {
return Math.pow(number.toDouble(), exponent.toDouble()).toInt()
}
测试代码:
val eight = powerOf(2, 3)
println("powerOf(2,3) = $eight")
输出:powerOf(2,3) = 8#### 默认参数
函数参数可以有默认值,当省略相应的参数时使用默认值。这可以减少重载数量。
fun add(x: Int = 0, y: Int = 0): Int {
return x + y
}
默认值通过类型后面的 = 及给出的值来定义。
测试代码:
val zero = add()
val one = add(1)
val two = add(1, 1)
println("add() = $zero")
println("add(1) = $one")
println("add(1, 1) = $two")
输出:
add() = 0
add(1) = 1
add(1, 1) = 2
另外,覆盖带默认参数的函数时,总是使用与基类型方法相同的默认参数值。
当覆盖一个带有默认参数值的方法时,签名中不带默认参数值:
open class DefaultParamBase {
open fun add(x: Int = 0, y: Int = 0): Int {
return x + y
}
}
class DefaultParam : DefaultParamBase() {
override fun add(x: Int, y: Int): Int { // 不能有默认值
return super.add(x, y)
}
}
```#### 命名参数
可以在调用函数时使用命名的函数参数。当一个函数有大量的参数或默认参数时这会非常方便。
给定以下函数
```kotlin
fun reformat(str: String,
normalizeCase: Boolean = true,
upperCaseFirstLetter: Boolean = true,
divideByCamelHumps: Boolean = false,
wordSeparator: Char = ' ') {
}
我们可以使用默认参数来调用它
reformat(str)
然而,当使用非默认参数调用它时,该调用看起来就像
reformat(str, true, true, false, '_')
使用命名参数我们可以使代码更具有可读性
reformat(str,
normalizeCase = true,
upperCaseFirstLetter = true,
divideByCamelHumps = false,
wordSeparator = '_'
)
并且如果我们不需要所有的参数
reformat(str, wordSeparator = '_')
```#### 可变数量的参数(Varargs)
函数的参数(通常是最后一个)可以用 `vararg` 修饰符标记:
```kotlin
fun <T> asList(vararg ts: T): List<T> {
val result = ArrayList<T>()
for (t in ts) // ts is an Array
result.add(t)
return result
}
允许将可变数量的参数传递给函数:
val list = asList(1, 2, 3)
当前内容版权归 JackChan1999 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 JackChan1999 .