为何未与函数参数同名的变量可作为函数调用实参?
问题解答:调用函数时能否使用与形参名不同的变量作为实参
当然可以,这是完全符合Kotlin语法规则的行为,核心原因是函数的形参和调用时的实参是完全独立的两个概念:
- 形参:函数定义中声明的
firstNumber、secondNumber只是函数内部用来接收传入值的占位符,它们的作用域仅限于函数内部,和调用方的变量名称没有任何绑定关系。 - 实参:调用函数时传入的变量(比如你的代码里的
thirdNumber),本质是将该变量存储的值传递给函数的形参。只要实参的类型和对应形参的类型匹配,变量叫什么名字完全不影响函数的执行。
结合你的代码具体分析:
当你调用subtract(firstNumber, thirdNumber)时,程序会做这两件事:
- 取出
firstNumber的值(10),传递给subtract函数的第一个形参(不管这个形参叫firstNumber还是别的名字) - 取出
thirdNumber的值(8),传递给subtract函数的第二个形参
哪怕你把调用代码改成subtract(10, 8)或者subtract(a, b)(只要a、b是Int类型变量),函数依然能正常运行——因为函数只关心传入的值,不关心调用方变量的名称。
补充:Kotlin支持命名参数语法,比如subtract(firstNumber = firstNumber, secondNumber = thirdNumber),这种情况下需要实参的命名和形参一致,但这是可选的语法糖,不是强制要求。
内容的提问来源于stack exchange,提问作者Afeez Womiloju
相关产品推荐
相关产品推荐

