Kotlin:明确未命名的函数参数
Kotlin: explicitly unnamed function arguments
@FunctionalInterface
interface Fn2<A, B, R> : BiFunction<A, B, R>, (A, B) -> R {
@JvmDefault
override operator fun invoke(p1: A, p2: B): R {
...
当我实现这个接口时:
object: Fn2<Int,Int,Int> {
override fun invokeEx(accum: Int, i: Int): Int =
accum + i
}
我收到警告:
Warning:(598, 76) Kotlin: The corresponding parameter in the supertype
'Fn2' is named 'a'. This may cause problems when calling this function
with named arguments.
是否可以在 invoke()
函数定义中使用某种注释或关键字或秘密名称(如 it
或 _
)来消除这些警告。我承认我正在做一些非标准的 Java/Kotlin 互操作,当我完成重构时可能会消失,但我仍然很好奇。
我知道有一个 @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")
(thank you evilbloodydemon),但我正在寻找一种方法来在我重写的函数签名中抑制它,而不是在实现中。
从 Kotlin 1.2.40 开始,无法将函数参数标记为显式未命名,而且我不知道有任何计划添加这种可能性。
@FunctionalInterface
interface Fn2<A, B, R> : BiFunction<A, B, R>, (A, B) -> R {
@JvmDefault
override operator fun invoke(p1: A, p2: B): R {
...
当我实现这个接口时:
object: Fn2<Int,Int,Int> {
override fun invokeEx(accum: Int, i: Int): Int =
accum + i
}
我收到警告:
Warning:(598, 76) Kotlin: The corresponding parameter in the supertype 'Fn2' is named 'a'. This may cause problems when calling this function with named arguments.
是否可以在 invoke()
函数定义中使用某种注释或关键字或秘密名称(如 it
或 _
)来消除这些警告。我承认我正在做一些非标准的 Java/Kotlin 互操作,当我完成重构时可能会消失,但我仍然很好奇。
我知道有一个 @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")
(thank you evilbloodydemon),但我正在寻找一种方法来在我重写的函数签名中抑制它,而不是在实现中。
从 Kotlin 1.2.40 开始,无法将函数参数标记为显式未命名,而且我不知道有任何计划添加这种可能性。