как вызвать (samename) метод, объявленный снаружи с помощью () {} scope в Kotlin - PullRequest
0 голосов
/ 02 октября 2018

Я хочу вызвать 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 голосов
/ 02 октября 2018

Kotlin не предоставляет синтаксиса для устранения неоднозначности между несколькими локальными функциями с одним и тем же именем.OuterClass в синтаксисе this@OuterClass - это имя определенного класса, который использовался в примере, из которого вы скопировали эту строку;оно не имеет общего значения «внешней области видимости».

Чтобы можно было вызывать обе функции, просто присвойте им разные имена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...