命名参数
本课属于 Coddy Kotlin 学习旅程的“基础知识”单元。第 58 课,共 93 课。
调用带有多个参数的函数时,通常要按照定义参数的确切顺序传入参数。不过,Kotlin 提供了一种更简洁的替代方式:“命名参数”。
使用命名参数时,你可以先写参数名,再写 =,以指定每个值对应的参数:
fun createProfile(name: String, age: Int, city: String) {
println("$name, $age, from $city")
}
fun main() {
createProfile(name = "Alice", age = 25, city = "Paris")
}
// 输出:Alice, 25, from Paris这样可以让代码更易读,尤其是在函数有多个类型相同的参数时。比较下面两次调用:
// 不使用命名参数时,这些数字是什么意思?
calculateArea(10, 5, 3)
// 使用命名参数后,就清楚多了!
calculateArea(length = 10, width = 5, height = 3)命名参数还可以让你按自己喜欢的任意顺序传递值:
fun greet(firstName: String, lastName: String) {
println("Hello, $firstName $lastName!")
}
fun main() {
greet(lastName = "Smith", firstName = "John")
}
// 输出:Hello, John Smith!你可以混合使用位置参数和命名参数,但使用命名参数后,后续参数也应使用命名参数,以免造成混淆。
挑战
中等为你提供了以下函数:
fun formatBook(title: String, author: String, year: Int) {
println("\"$title\" by $author ($year)")
}读取 3 个输入:书名(String)、作者姓名(String)和出版年份(Int)。
按以下特定顺序使用命名参数调用 formatBook 函数:year、title、author。
例如,如果输入为:
1984
George Orwell
1949输出应为:
"1984" by George Orwell (1949)亲手试试
fun formatBook(title: String, author: String, year: Int) {
println("\"$title\" by $author ($year)")
}
fun main() {
val title = readLine()!!
val author = readLine()!!
val year = readLine()!!.toInt()
// TODO:使用命名参数调用 formatBook,参数顺序为:year、title、author
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Kotlin 在线编辑器