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

标签 kotlin default-parameters

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

fun f(p1: T1? = null, p2: T2? = null, ..., pN: TN? = null) {
    // ...
}

上述函数的实现能否区分以下两个调用,其中第一个通过 p1 = null隐含地,而第二个显式地传递了它?

f()          // Implicit
f(null)      // Explicit
f(p1 = null) // Explicit

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

最佳答案

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

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

关于kotlin - 有没有办法区分在 Kotlin 中显式或隐式传递的函数参数的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61761668/

相关文章:

gradle - 如何使用 gradle-script-kotlin 配置 spring-boot 重新打包

python - 默认参数是否会覆盖 mypy 的类型提示?

python - 如何避免由 Python 的早期绑定(bind)默认参数(例如可变默认参数 "remembering"旧数据)引起的问题?

c++ - 为什么成员变量不能作为参数的默认值?

android - 使用 safeargs 我得到 "required Bundle found Bundle?"

Kotlin-非单例类的单个实例?

java - 创建 Producer 方法时收到模糊依赖警告

generics - Kotlin:返回泛型类型的函数。如果我不知道应该返回哪种具体类型怎么办?

.net - 可选参数 : "empty" vs "not provided"

使用 bool 和 const char 的 C++ 函数重载会产生歧义而不发出警告 (MSVC2012)