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