gpt4 book ai didi

java - 默认参数和 @JvmOverloads 在 Kotlin 上如何工作?

转载 作者:行者123 更新时间:2023-12-02 07:38:58 26 4
gpt4 key购买 nike

当我们像这样用 Kotlin 创造乐趣时

fun foo(bar: Int = 0, baz: Int) { /* ... */ }

foo(baz = 1) // The default value bar = 0 is used

所以在java中我们需要这样写例如

不需要写

void foo(int bar, int baz){
...
}

void foo(int baz){
foo(0,baz);
}

想象一下,如果我们有 10 个以上的参数。我想知道 Kotlin 如何处理这个问题。 Kotlin 会生成所有可能的方法吗?或者它只是生成程序员真正使用的方法?

最佳答案

不会生成 2^N 重载。正如 docs 中所述,

For every parameter with a default value, this will generate one additional overload, which has this parameter and all parameters to the right of it in the parameter list removed.

对于具有默认参数的函数,例如,

 fun foo(bar: Int = 1, baz: Int = 2, qux: Int = 3) { /*...*/ }

它会产生重载

 foo()
foo(bar)
foo(bar, baz)
foo(bar, baz, qux)

关于java - 默认参数和 @JvmOverloads 在 Kotlin 上如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46023983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com