gpt4 book ai didi

带默认参数的kotlin重载方法

转载 作者:行者123 更新时间:2023-12-02 01:02:02 25 4
gpt4 key购买 nike

这是场景,我得到了以下两种方法。

fun foo(p1:Int,p2:String?=null)

fun foo(p1:Int,p2:Int=0)

如何用foo(1)引用具体的方法?

最佳答案

如果调用者只有一个参数,这是一个错误:

foo(1) // error

Error:(Y, X) Kotlin: Overload resolution ambiguity:

public fun foo(p1: Int, p2: Int = ...): Unit defined in mypackage in file MyFile.kt

public fun foo(p1: Int, p2: String? = ...): Unit defined in mypackage in file MyFile.kt

因此您必须以不同的方式命名它们或提供另一个区分符(另一个参数),以便编译器知道选择哪个选项。它也无法想象第二个参数可能是什么来选择默认值。

如果您可以使您的逻辑从中起作用(也许不是),您也可以将它组合成一个具有两个可选参数的函数。

或者让它们只是用两个相关的名称来命名,这些名称也描述了差异,例如一些虚构的方法:

calcValueFromInt(p1: Int, p2: Int = 0) { ... }
calcValueFromString(p1: Int, p2: String? = null) { ... }

无论如何,这提高了可读性。

关于带默认参数的kotlin重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49933101/

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