Затенение переменной в Kotlin - PullRequest
1 голос
/ 03 марта 2020

Я получаю предупреждения о теневом копировании в следующем коде для it, потому что он вложенный. Как правильно исправить это предупреждение?

Network.callServer(Constants.url + "/get_call_one.php", dataToSend) {
    if (it["result"].toString() == "PASS")
    {
        Network.callServer(Constants.url + "/get_call_two.php", dataToSend) {
            if (it["result"].toString() == "PASS")
            {
                // do stuff
            }
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 03 марта 2020

В коде есть несколько скрытых объявлений it -> ...

Network.callServer(Constants.url + "/get_call_one.php", dataToSend) { it->
    if (it["result"].toString() == "PASS")
    {
        Network.callServer(Constants.url + "/get_call_two.php", dataToSend) { it->
            if (it["result"].toString() == "PASS")
            {
                // do stuff
            }
        }
    }
}

, просто переименуйте одно или оба из них:

Network.callServer(Constants.url + "/get_call_one.php", dataToSend) { it1->
    if (it1["result"].toString() == "PASS")
    {
        Network.callServer(Constants.url + "/get_call_two.php", dataToSend) { it2->
            if (it2["result"].toString() == "PASS")
            {
                // do stuff
            }
        }
    }
}
0 голосов
/ 03 марта 2020

Вы можете переименовать свою внутреннюю лямду это в новую; как элемент или данные

Network.callServer(Constants.url + "/get_call_one.php", dataToSend) { it->
    if (it["result"].toString() == "PASS")
    {
        Network.callServer(Constants.url + "/get_call_two.php", dataToSend) { item ->
            if (item["result"].toString() == "PASS")
            {
                // do stuff
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...