如何在Kotlin中调用在with(){}范围外声明的(同名)方法

时间:2018-10-02 09:57:19

标签: kotlin

我想用()调用在外部声明的dada() 下面有一行代码可以满足我的需要,但不能编译。

data class Person(val name: String, val age: Int)

fun main(args: Array<String>) {
    var muchos = "muchos"

    fun dada(){
        println("dada")}
    var someRun = Runnable { println(muchos) }

    with(someRun){
        fun dada(){
            println("dodo")}
        run()
        muchos = "holas"
        //*********************//DOES'T COMPILE *******************
        this@OuterClass.dada() //DOES'T COMPILE *******************
        run()

    }
}

1 个答案:

答案 0 :(得分:1)

Kotlin没有提供用于在多个具有相同名称的本地函数之间进行歧义消除的语法。 OuterClass语法中的this@OuterClass是在示例中复制此行的示例中使用的特定类的名称;它没有“外部范围”的一般含义。

要同时调用这两个函数,只需给它们命名不同即可。