首页 > 解决方案 > Kotlin中多态函数中的参数定位

问题描述

我是 kotlin 的新手,我想要两个带有默认参数的多态函数,但它似乎不起作用。这是我的代码:

private fun add(request: Request, share: Boolean = false, number : Int){
   Do something ... 
}
private fun add(key: String, share: Boolean = false){
   Do something ... 
}

我的问题是我不能使用默认值,因为编译器似乎没有推断出它。

add(request,  number)

当我这样做时,这意味着我想使用第一个函数和布尔值的默认值,我收到一个错误,说它需要一个字符串并且它找到了一个请求。

我认为编译器与默认值和多态性混淆了;它似乎不知道要使用的女巫功能。有什么方法可以解决这个问题,还是我每次都必须明确声明默认值,使默认值无用?

标签: kotlinpolymorphismdefault-value

解决方案


将具有默认值的参数移动到第一个函数的第 3 位,使其变为

private fun add(request: Request, number : Int, share: Boolean = false){ Do something ...

它会起作用的。您可以通过命名参数解决此问题,例如,如果您调用add(request = request, number = number)它也可以


推荐阅读