На этом шаге мы рассмотрим создание и использование таких строк.
Вы уже видели, что строку можно сконструировать из значений переменных и даже из результатов условных выражений. Чтобы упростить эту задачу и сделать код более понятным, в 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, потому что мы снова будем использовать его в следующих шагах, где познакомимся с функциями - удобным способом группировки и повторного использования выражений в программе.
На следующем шаге мы приведем несколько заданий для самостоятельного решения.