Mark unused parameters in Kotlin

后端 未结 4 1711
青春惊慌失措
青春惊慌失措 2020-12-14 05:40

I am defining some functions to be used as callbacks and not all of them use all their parameters.

How can I mark unused parameters so that the compiler won\'t give

相关标签:
4条回答
  • 2020-12-14 05:42

    One can disable these warnings by adding a kotlin compile option flag in build.gradle. To configure a single task, use its name. Examples:

    compileKotlin {
        kotlinOptions.suppressWarnings = true
    }
    
    compileKotlin {
        kotlinOptions {
            suppressWarnings = true
        }
    }
    

    It is also possible to configure all Kotlin compilation tasks in the project:

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

    If one is using kotlin in Android and want to suppress kotlin compiler warnings, add below in app-module build.gradle file

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

    Whether you really need to suppress all kotlin warning for your project or not, its up to you.

    0 讨论(0)
  • 2020-12-14 05:44

    With the @Suppress annotation You can suppress any diagnostics on any declaration or expression.

    Examples: Suppress warning on parameter:

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

    Suppress all UNUSED_PARAMETER warnings inside declaration

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

    Additionally IDEA's intentions(Alt+Enter) can help you to suppress any diagnostics:

    0 讨论(0)
  • 2020-12-14 05:45

    If your parameter is in a lambda, you can use an underscore to omit it. This removes the unused parameter warnings. It will also prevent IllegalArgumentException in the case that the parameter was null and was marked non-null.

    See https://kotlinlang.org/docs/reference/lambdas.html#underscore-for-unused-variables-since-11

    0 讨论(0)
  • 2020-12-14 06:02

    If the functions are part of a class you can declare the containing class open or abstract and the offending methods as open.

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

    Or

    abstract class ClassForCallbacks {
      // no warnings here!
      open fun methodToBeOverriden(a: Int, b: Boolean) {}
    }
    
    0 讨论(0)
提交回复
热议问题