Markieren Sie nicht verwendete Parameter in Kotlin

78

Ich definiere einige Funktionen, die als Rückrufe verwendet werden sollen, und nicht alle verwenden alle ihre Parameter.

Wie kann ich nicht verwendete Parameter markieren, damit der Compiler mich nicht warnt?

TheTeaMan
quelle

Antworten:

124

Mit der @SuppressAnmerkung Sie können jede Diagnose für jede Deklaration oder jeden Ausdruck unterdrücken.

Beispiele: Warnung auf Parameter unterdrücken:

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

Unterdrücken Sie alle UNUSED_PARAMETER-Warnungen in der Deklaration

@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) {}
    }
}

Zusätzlich können die Absichten von IDEA (Alt + Enter) Ihnen helfen, jegliche Diagnose zu unterdrücken:

bashor
quelle
1
Vielen Dank. Gibt es eine Möglichkeit, es auf [unbenutzt] oder so zu verkürzen? Ich habe es versucht, annotation class unused : suppress("UNUSED_PARAMETER")aber es funktioniert nicht, weil es unterdrückt wird, endgültig zu sein.
TheTeaMan
Sie sollten in der Lage sein, die Klammern wegzulassen, die zwei Zeichen speichern :)
Kirill Rakhman
Zusätzlich können Sie Anmerkungsparameter extrahieren und freigeben.
Bashor
Mein Kommentar galt für die alte, jetzt entfernte Anmerkungssyntax und ist nicht mehr gültig.
Kirill Rakhman
Ich hatte Listener-Methoden mit mehreren Argumenten und nur eines wurde verwendet. Ich konnte @Suppress("UNUSED_PARAMETER")über die Methode setzen. So werden alle drei unbenutzten Argumente von insgesamt vier behandelt :)
ecth
0

Wenn die Funktionen Teil einer Klasse sind, können Sie die enthaltende Klasse openoder abstractund die fehlerhaften Methoden als deklarieren open.

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

Oder

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

Sie können diese Warnungen deaktivieren, indem Sie in build.gradle ein Kotlin-Kompilierungsoptionsflag hinzufügen. Verwenden Sie den Namen einer einzelnen Aufgabe, um sie zu konfigurieren. Beispiele:

compileKotlin {
    kotlinOptions.suppressWarnings = true
}

compileKotlin {
    kotlinOptions {
        suppressWarnings = true
    }
}

Es ist auch möglich, alle Kotlin-Kompilierungsaufgaben im Projekt zu konfigurieren:

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

Wenn Sie Kotlin in Android verwenden und Warnungen des Kotlin-Compilers unterdrücken möchten, fügen Sie unten in der Datei build.gradle des App-Moduls hinzu

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

Ob Sie wirklich alle Kotlin-Warnungen für Ihr Projekt unterdrücken müssen oder nicht, liegt ganz bei Ihnen.

Mahendra Chhimwal
quelle
21
Warum sollte jemand die Warnung für das gesamte Projekt unterdrücken? Es ist keine gute Praxis.
Xenolion