有没有办法区分在 Kotlin 中显式或隐式传递的函数参数的默认值?

Luk*_*der 5 default-parameters kotlin

假设一个 kotlin 函数是这样的:

fun f(p1: T1? = null, p2: T2? = null, ..., pN: TN? = null) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

上述函数的实现能否区分以下两个调用,第一个是p1 = null隐式传递,第二个是显式传递?

f()          // Implicit
f(null)      // Explicit
f(p1 = null) // Explicit
Run Code Online (Sandbox Code Playgroud)

注意:可以有任意数量的参数

Lou*_*man 5

不,它无法区分这些情况。

但是,如果添加了不同的重载,则可以区分它们。