我有疑问,在函数调用中使用名称参数和变量名称相同的命名参数是否可以
例如
fun fun1( to:string ){
//body}
fun fun2( ){
to = "xyz"
fun1( to = to)
}
调用参数名为“to”的fun1并传递变量“to”可以这样做吗?在任何一种情况下,有人都可以解释编译器将如何解决这个问题
在 Kotlin 中,仅当变量/属性名称和
=
位于一行代码的开头(或 lambda 或已定义函数的 { }
作用域中的第一个代码)时,才会发生属性或变量赋值,而不是在表达式或函数参数列表的中间。
由于编译器在函数调用的参数列表中看到
to =
,因此会将其解析为命名参数而不是变量赋值,因此 to
的 to =
被解释为函数参数名称。