Позначте невикористані параметри в 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.