Котлин: явно безымянные аргументы функции - PullRequest
0 голосов
/ 04 июня 2018
@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» называется «а».Это может вызвать проблемы при вызове этой функции с именованными аргументами.

Существует ли какая-то аннотация или ключевое слово или секретное имя (например, it или _), которые я могу использовать на invoke() определение функции, чтобы избавиться от этих предупреждений.Я признаю, что делаю что-то нестандартное с взаимодействием Java / Kotlin, которое может исчезнуть, когда я закончу рефакторинг, но мне все еще любопытно.

Я знаю, что есть @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") (спасибо evilbloodydemon ), но я ищу способ подавить его в сигнатуре функции, которую я переопределяю, а не в реализации.

1 Ответ

0 голосов
/ 04 июня 2018

Начиная с Kotlin 1.2.40, нет возможности пометить аргумент функции как явно безымянный, и я не знаю никаких планов добавить такую ​​возможность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...