Лучший способ заменить вложенный, если еще в Kotlin - PullRequest
0 голосов
/ 26 марта 2020

Есть ли лучший способ заменить ниже, если не более, в Kotlin. Я пытался заменить оператором when, но я не смог сопоставить логи c.

if (!reached)
        {
            if (!info)
            {
                d.sinfo = extractinfo()
            }
            else
            {
                parserMessage("print something")
                return d
            }
            info = true
        }
        else
        {
            if (d.media.isEmpty()){
                parserMessage("print something")
                return d
            }
            else{
                if (d.media.at(d.media.size() - 1).media_information.isEmpty())
                    {d.media[d.media.size() - 1].minfo = extractinfo()}
                else{
                    parserMessage("print something")
                    return d

            }
        }
    }

1 Ответ

0 голосов
/ 26 марта 2020

Если код, который вы пропустили, не имеет каких-либо странных побочных эффектов, этот код должен быть семантически равным:

when {
    !reached && !info -> {
        d.sinfo = extractinfo()
        info = true
    }
    !reached && info -> {
        parserMessage("print something")
        return d
    }
    d.media.isEmpty() -> {
        parserMessage("print something")
        return d
    }
    d.media.at(d.media.size() - 1).media_information.isEmpty() -> {
        d.media[d.media.size() - 1].minfo = extractinfo()
    }
    else -> {
        parserMessage("print something")
        return d
    }
}

Однако, чтобы сказать это, я должен был заполнить пробелы в коде, который вы представили сами, поэтому я не могу утверждать это очень уверенно. Это действительно повышает ваши шансы получить хороший ответ, если код, с которым вы хотите помочь, работает / понятен в том виде, в котором он представлен.

Кстати. Этот рефакторинг был частично выполнен путем вставки кода в IntelliJ и нажатия Alt + Enter и выбора «Заменить», если «на», когда »и« Сгладить, когда »

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