Позначте невикористані параметри в Kotlin


82

Я визначаю деякі функції, які використовуватимуться як зворотні виклики, і не всі з них використовують усі свої параметри.

Як я можу позначити невикористані параметри, щоб компілятор не давав мені попереджень про них?

Відповіді:


129

За допомогою @Suppressанотації Ви можете придушити будь-яку діагностику будь-якої декларації або виразу.

Приклади: Придушити попередження щодо параметра:

fun foo(a: Int, @Suppress("UNUSED_PARAMETER") b: Int) = a

Придушити всі попередження UNUSED_PARAMETER всередині декларації

@Suppress("UNUSED_PARAMETER")
fun foo(a: Int,  b: Int) {
  fun bar(c: Int) {}
}

@Suppress("UNUSED_PARAMETER")
class Baz {
    fun foo(a: Int,  b: Int) {
        fun bar(c: Int) {}
    }
}

Крім того, наміри IDEA (Alt + Enter) можуть допомогти вам придушити будь-яку діагностику:


1
Дякую. чи є спосіб скоротити його до [невикористаного] чи щось інше? Я спробував, annotation class unused : suppress("UNUSED_PARAMETER")але це не працює через придушення остаточності.
TheTeaMan

Ви повинні мати можливість опустити дужки, що зберігає два символи :)
Кирило Рахман

Додатково Ви можете витягувати параметри анотацій та ділитися ними.
bashor

Мій коментар застосований до старого, тепер вилученого синтаксису анотацій і більше не діє.
Кирило Рахман,

У мене були методи прослуховування з кількома аргументами, і використовувався лише один. Я зміг встановити @Suppress("UNUSED_PARAMETER")вище метод. Таким чином , всі три невикористовувані аргументи чотири в загальній складності покриті :)
ecth

5

Якщо ваш параметр знаходиться в лямбда-точці, ви можете використовувати підкреслення, щоб опустити його. Це видаляє попередження про невикористані параметри. Це також запобіжить IllegalArgumentExceptionу випадку, якщо параметр був нульовим і був позначений як ненульовий.

Див. Https://kotlinlang.org/docs/reference/lambdas.html#underscore-for-unused-variables-since-11


0

Якщо функції є частиною класу, ви можете оголосити вміщуючий клас openабо abstractта порушувальні методи як open.

open class ClassForCallbacks {
  // no warnings here!
  open fun methodToBeOverriden(a: Int, b: Boolean) {}
}

Або

abstract class ClassForCallbacks {
  // no warnings here!
  open fun methodToBeOverriden(a: Int, b: Boolean) {}
}

-4

Можна заблокувати ці попередження, додавши прапорець компіляції kotlin у build.gradle. Щоб налаштувати одне завдання, використовуйте його назву. Приклади:

compileKotlin {
    kotlinOptions.suppressWarnings = true
}

compileKotlin {
    kotlinOptions {
        suppressWarnings = true
    }
}

Також у проекті можна налаштувати всі завдання компіляції Kotlin:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        // ...
    }
}

Якщо ви використовуєте kotlin в Android і хочете придушити попередження компілятора kotlin, додайте нижче у файл app-module build.gradle

android{
    ....other configurations
    kotlinOptions {
        suppressWarnings = true
    }
}

Чи дійсно вам потрібно придушити всі попередження kotlin для вашого проекту чи ні, це вирішувати вам.


21
Чому хтось придушує попередження для всього проекту ?? Це погана практика.
Xenolion
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.