Шаг 92.
Основы Kotlin.
Числа. Преобразование строки в число

    На этом шаге мы перечислим используемые для этого функции и приведем пример использования одной из них.

    Если запустить Tavern.kt сейчас, то появится ошибка компиляции. Это происходит потому, что переменная цены, которую вы передаете в performPurchase(), является строкой, а функция принимает значение типа Double. Для человека "5.91" выглядит как число, но компилятор Kotlin видит это иначе, потому что значение было получено функцией split() из строки menuData.

    Однако все не так плохо, потому что в Kotlin есть функции для преобразования строк в другие типы, даже в числа. Вот самые широко используемые функции преобразования:

    Попытка преобразовать строку не в том формате вызовет исключение. Например, вызов toInt() со строкой "5.91" возбудит исключение, потому что Int не поддерживает дробных значений.

    Так как преобразование в разные числовые форматы может вызвать исключение, Kotlin предлагает функции безопасного преобразования toDoubleOrNull() и toIntOrNull(). Если число нельзя преобразовать без ошибки, возвращается значение null вместо исключения. Используйте оператор ?: с toIntOrNull(), например, чтобы вернуть другое значение:

  val gold: Int = "5.91".toIntOrNull() ?: 0

    Измените код placeOrder(), чтобы преобразовать строковый аргумент в Double для performPurchase().

const val TAVERN_NAME = "Taernyl's Folly"
.   .   .   .   .
private fun placeOrder(menuData: String) {
    .   .   .   .   .
    val (type, name, price) = menuData.split(',')
    val message = "Madrigal buys a $name ($type) for $price."
    println(message)

    performPurchase(price.toDouble())
    .   .   .   .   .
}
.   .   .   .   .
}
Файл с проектом можно взять здесь.


Рис.1. Перевод аргумента price в Double (Tavern.kt)

    На следующем шаге мы рассмотрим преобразование Int в Double.




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