Шаг 28.
Основы Kotlin.
Условные конструкции. Шаблонные строки

    На этом шаге мы рассмотрим создание и использование таких строк.

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

    Шаблоны позволяют включать значения переменных в кавычки. Обновите отображение состояния игрока, используя шаблонные строки, как показано ниже.

fun main() {
    .   .   .   .
    // Состояние игрока
    println("$name $healthStatus")
}


Рис.1. Использование шаблонной строки (Game.kt)

    Вы добавили значения name и healthStatus в строку отображения состояния игрока, добавив к каждой переменной префикс $. Этот специальный символ сообщает Kotlin, что вы хотите включить val или var в определяемую строку. Обратите внимание, что шаблонные значения появляются внутри кавычек, определяющих строку.

    Запустите программу. В консоли появится тот же текст, что и в прошлый раз:

  GREEN
  Madrigal has some minor wounds but is healing quite quickly!


Рис.2. Результат работы приложения

    Kotlin позволяет вычислить значение внутри строки и интерполировать результат, то есть внедрить его в строку. Значение любого выражения, заключенного в фигурные скобки после знака доллара (${}), будет автоматически вставлено в строку. Добавьте в отчет о состоянии игрока признак благословения и цвет ауры, чтобы посмотреть, как это работает. Не забудьте убрать существующий оператор вывода для auraColor.

fun main() {
    .   .   .   .
    // Аура
    val auraVisible = isBlessed && healthPoints > 50 || isImmortal
    val auraColor = if (auraVisible) "GREEN" else "NONE"
    .   .   .   .
    // Состояние игрока
    println("(Aura: $auraColor) " +
            "(Blessed:  ${if (isBlessed) "YES" else "NO"})")
    println("$name $healthStatus")
}
Файл с проектом можно взять здесь.


Рис.3. Преобразование isBlessed в строку (Game.kt)

    Этот новый код сообщает компилятору, что нужно вывести строку символов (Blessed: и результат условного выражения if (isBlessed) "YES" else "NO". Обратите внимание, что здесь используется вариант без фигурных скобок. Тут получается то же самое, что и в следующем случае:

  if (isBlessed) {
    "YES"
  } else {
    "NO"
  }

    Дополнительные фигурные скобки не дают ничего нового, поэтому лучше избавиться от них. В любом случае оценка состояния будет включена в строку. Прежде чем запускать программу, перепроверьте свое исправление. Как вы думаете, какой будет результат? Запустите программу, чтобы подтвердить свои предположения.


Рис.4. Результат работы приложения

    Основная работа программ заключается в реагировании на состояния или действия. В этих шагах вы узнали, как добавлять правила выполнения кода с помощью условных выражений if/else и when. Увидели, как выражать последовательности чисел с помощью интервалов. Наконец, рассмотрели пример интерполяции переменных и значений в строки.

    Не забудьте сохранить NyetHack, потому что мы снова будем использовать его в следующих шагах, где познакомимся с функциями - удобным способом группировки и повторного использования выражений в программе.

    На следующем шаге мы приведем несколько заданий для самостоятельного решения.




Предыдущий шаг Содержание Следующий шаг