Kotlin. Шаблонные строки

Шаблонные строки. Конструкции $ и $ {}. Примеры конструирования шаблонных строк


Содержание


Поиск на других ресурсах:

1. Шаблонные строки. Особенности использования для одиночных значений. Префикс $

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

Шаблон формируется одним из двух способов:

  • на основе использования префикса $, который следует перед именем переменной или константы;
  • на основе использования конструкции $ {}, которая позволяет вычислять результаты выражений.

Шаблон, взятый в двойные кавычки, образует шаблонную строку. В простейшем случае шаблонная строка, в которой получается значение одной переменной, имеет следующий вид:

"$var_name"

здесь

  • var_name – имя переменной (val или var), значение которой подставляется в шаблонную строку.

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

 

2. Пример конвертирования переменных различных типов в шаблонные строки и их использование

В примере демонстрируется конвертирование одиночных переменных различных типов в шаблонные строки.

// Шаблонные строки

// Перечисление, определяющее дни недели
enum class Days (vl : Int) {
  Sun(1),
  Mon(2),
  Tue(3),
  Wed(4),
  Thi(5),
  Fri(6),
  Sat(7)
}

// Константа
const val Pi = 3.1415

fun main(args:Array<String>)
{
  // Демонстрация использования шаблонных строк

  // 1. Сформировать шаблонную строку для целого типа Int
  val d : Int
  d = 25
  var s : String = "$d"
  println("s = " + s) // s = 25

  // 2. Для значения с плавающей запятой
  var x : Double = 3.887
  s = "$x"
  println("s = " + s) // s = 3.887

  // 3. Для константы Pi
  s = "$Pi"
  println("s = " + s) // s = 3.1415

  // 4. Вычислить длину окружности радиуса 2.0
  //   и вывести ее как шаблонную строку
  val area : Float = Pi.toFloat() * 2.0F
  println("area = $area") // area = 6.283

  // 5. Вывести значение всех переменных за один раз
  println("$d, $x, $Pi, $area") // 25, 3.887, 3.1415, 6.283

  // 6. Использование шаблонных строк для перечислений
  val days : Days
  days = Days.Fri
  println("$days") // Fri
}

Результат выполнения программы

s = 25
s = 3.887
s = 3.1415
area = 6.283
25, 3.887, 3.1415, 6.283
Fri

 

3. Вычисление значений сложных выражений. Конструкция $ {}. Использование оператора if-else в шаблонной строке

Язык Kotlin имеет средства вычисления результатов выражений внутри шаблонной строки. Для этого используется конструкция, которая имеет следующую общую форму

${expression}

здесь

  • expression – некоторое выражение, имеющее смысл с точки зрения синтаксиса языка Kotlin.

Для выражения expression можно сформировать следующие утверждения:

  • выражение допускает использование оператора условного перехода if-else;
  • выражение допускает вложение конструкций $ {} друг в друга при формировании шаблонной строки;
  • выражение не допускает использование других операторов кроме оператора if-else.

Например, следующая шаблонная строка корректна

"${if (a > b) "a>b" else "a<=b"}"

 

4. Пример использования шаблонных строк, которые содержат сложные выражения

В примере, на основе введенного радиуса (radius) формируются три шаблонные строки, содержащие результат вычисления:

  • длины окружности (переменная sLength);
  • площади круга (sArea);
  • объема шара (sVolume).

 

// Шаблонные строки

const val Pi = 3.1415

fun main(args:Array<String>)
{
  // Демонстрация использования оператора if-else
  // в шаблонной строке

  // 1. Объявить переменные
  val radius : Double

  // 2. Ввести радиус
  print("radius = ")
  radius = readLine().toString().toDouble()

  // 3. Сформировать шаблонные строки
  // Длина окружности
  val sLength : String = "Circumference = ${2*Pi*radius}"

  // Площадь круга
  val sArea : String = "Area = ${Pi*radius*radius}"

  // Объем шара
  val sVolume : String = "Volume = ${4.0/3 * Pi*Math.pow(radius,3.0)}"

  // 4. Вывести сформированные шаблонные строки
  println(sLength)
  println(sArea)
  println(sVolume)
}

Результат выполнения программы

radius = 3.5
Circumference = 21.9905
Area = 38.483375
Volume = 179.58908333333332

 

5. Пример создания шаблонной строки, содержащей оператор if-else для вычисления результата решения квадратного уравнения

В примере демонстрируется решение квадратного уравнения. По введенным значениям a, b, c вычисляется дискриминант D. На основе дискриминанта D формируется шаблонная строка str, содержащая результат вычисления.

fun main(args:Array<String>)
{
  // Демонстрация использования оператора if-else
  // в шаблонной строке

  // 1. Объявить переменные
  val a : Double
  val b : Double
  val c : Double
  val x1 : Double
  val x2 : Double
  val D : Double

  // 2. Ввод данных
  print("a = ")
  a = readLine().toString().toDouble()
  print("b = ")
  b = readLine().toString().toDouble()
  print("c = ")
  c = readLine().toString().toDouble()

  // 3. Вычисление дискриминанта
  D = b*b - 4*a*c

  // 4. На основании дискриминанта формируется шаблонная строка
  val str : String
  str = "${
    if (D<0) "The equatin has no roots."
    else {
      x1 = (-b - Math.sqrt(D)) / (2*a)
      x2 = (-b + Math.sqrt(D)) / (2*a)
      "x1 = $x1; $x2"
    }
  }"

  // 5. Вывести сформированную шаблонную строку
  println(str)
}

При формировании шаблонной строки str, можно использовать вложенные конструкции $ {} по образцу ниже

...

// 4. На основании дискриминанта формируется шаблонная строка
val str : String
str = "${
  if (D<0) "The equatin has no roots."
  else
  {
    "x1 = ${(-b - Math.sqrt(D)) / (2*a)}; " +
      "${(-b + Math.sqrt(D)) / (2*a)}"
  }
}" 

...

Результат выполнения программы

a = -8
b = 3
c = 5
x1 = 1.0; -0.625

 


Связанные темы