Kotlin提供了在函数定义中指定默认参数(参数)的工具。
如果调用函数而不传递任何参数,则使用默认参数作为函数定义的参数。 当使用参数调用函数时,传递参数将用作函数定义中的参数。
默认参数示例1:在函数调用中不传递参数
fun main(args: Array<String>) { run() } fun run(num:Int= 5, latter: Char ='x'){ print("parameter in function definition $num and $latter") }
执行上面示例代码,得到以下结果 -
parameter in function definition 5 and x
在上面的程序中,run()
函数调用没有传递参数,它使用在函数定义中的默认参数。
默认参数示例2:在函数调用中传递一些参数
fun main(args: Array<String>) { run(3) } fun run(num:Int= 5, latter: Char ='x'){ print("parameter in function definition $num and $latter") }
执行上面示例代码,得到以下结果 -
parameter in function definition 3 and x
在上面的程序中,run()
函数调用带有一个(第一个)参数,函数定义的第一个参数是使用传递给函数的值,它指定传递值为:3
。 第二个参数用作默认参数。
默认参数示例3:在函数调用中传递所有参数
fun main(args: Array<String>) { run(99,'z') } fun run(num:Int= 5, latter: Char ='x'){ print("parameter in function definition $num and $latter") }
执行上面示例代码,得到以下结果 -
parameter in function definition 99 and z
由于所有参数都在run()
函数调用中传递,因此函数定义的参数使用函数调用中传递的参数。
在讨论命名参数之前,先对上面的程序中做一些修改。
示例:
fun main(args: Array<String>) { run('a') } fun run(num:Int= 5, latter: Char ='x'){ print("parameter in function definition $num and $latter") }
执行上面示例代码,得到以下结果 -
Error: Kotlin: The character literal does not conform to the expected type Int
在这里,尝试将参数'a'
从函数调用传递给函数定义的第二个参数。 但编译器假定参数'a'
(Char类型)为第一个参数(Int
类型)传递,这会导致程序错误。
要解决上述问题,可使用命名参数。
命名参数是一个参数,在函数调用中定义参数的名称。 定义函数调用的参数名称,并检查匹配函数定义中的名称然后分配给它。
Kotlin命名为参数示例
fun main(args: Array<String>) { run(latter='a') } fun run(num:Int= 5, latter: Char ='x'){ print("parameter in function definition $num and $latter") }
执行上面示例代码,得到以下结果 -
parameter in function definition 5 and a