kotlin - Kotlin:显式未命名的函数参数
问题描述
@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
}
我收到警告:
警告:(598, 76) Kotlin:超类型“Fn2”中的相应参数名为“a”。当使用命名参数调用此函数时,这可能会导致问题。
是否有某种注释或关键字或秘密名称(如it
or _
),我可以在invoke()
函数定义中使用它们来消除这些警告。我承认我正在使用 Java/Kotlin 互操作做一些非标准的事情,当我完成重构时可能会消失,但我仍然很好奇。
我知道有一个@Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")
(谢谢 evilbloodydemon),但我正在寻找一种方法来在我覆盖的函数签名处抑制它,而不是在实现中。
解决方案
从 Kotlin 1.2.40 开始,不可能将函数参数标记为显式未命名,而且我不知道有任何计划添加这种可能性。
推荐阅读
- python - 迭代字典时修改字典中的值
- spring - 尝试将 JSON 发布到方法最终会出现此错误 - 所需的字符串参数“名称”不存在
- ios - 在 iOS 设备上的 Google Colaboratory 中复制代码
- javascript - 如何使用流修改 nodejs 中的文件?
- php - 在laravel(PHP)中将图像上传到firebase云存储
- python - 如何使用 pyInstaller 将 python 脚本转换为可执行文件
- arrays - 如何解决这个 Laravel 会话问题
- c# - 在 C# (Unity) 中按多个变量对列表进行排序
- reactjs - 在调度一个 redux Action 创建者的方法之后。整个应用程序不断重新加载?从字面上看不明白发生了什么?
- typescript - 为什么我的元组中的第一个值总是未知的?