> Что такое оператор to в Kotlin и как он используется (Kotlin, Android)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: Совкомбанк

Стек: Kotlin, Android

> Пример ответа

Короткий ответ

to в Kotlin - это infix-функция, которая создаёт пару Pair<A, B> из двух значений. Она используется для лаконичного создания пар, например, в mapOf(1 to "one"). Это синтаксический сахар над конструктором Pair, который делает код более читаемым и идиоматичным.

Подробное объяснение

to - это infix-функция, объявленная в стандартной библиотеке Kotlin как расширение для любого типа:

public infix fun <A, B> A.to(that: B): Pair<A, B> = Pair(this, that)

Ключевые особенности:

  • infix позволяет вызывать функцию без точки и скобок: 1 to "one" вместо 1.to("one").
  • Возвращает Pair<A, B> - неизменяемую структуру данных, хранящую два значения.
  • Чаще всего используется при создании Map через mapOf, где каждый элемент - это Pair.
  • Работает с любыми типами, включая nullable.
  • Pair можно деструктуризировать: val (key, value) = 1 to "one".

На практике

В Android-разработке to встречается в:

  • Инициализации Bundle или SharedPreferences через mapOf.
  • Создании словарей для маппинга данных (например, коды ошибок к сообщениям).
  • Передаче пар значений в функции, принимающие Pair.
  • Работе с Map - итерации, фильтрации, трансформации.

Важно помнить: to создаёт именно Pair, а не Map - для Map нужен mapOf или toMap().

Пример кода

// Базовое использование
val pair = 1 to "one"
println(pair) // (1, one)

// В mapOf
val map = mapOf(
    "key1" to 42,
    "key2" to 100
)

// Деструктуризация
val (number, word) = 10 to "ten"
println("$number -> $word") // 10 -> ten

// В Android-контексте
val params = mapOf(
    "userId" to userId,
    "isPremium" to isPremium
)

// Цепочка вызовов
val result = listOf(1, 2, 3).map { it to it * 2 }
// [(1, 2), (2, 4), (3, 6)]

Как отвечать на собеседовании

  1. Начни с определения: infix-функция для создания Pair.
  2. Покажи синтаксис и объясни, почему это удобно.
  3. Приведи реальный пример использования в Android (например, mapOf).
  4. Упомяни, что to - это функция из стандартной библиотеки, а не оператор языка.
  5. Если спросят глубже - расскажи про деструктуризацию и Pair.

Что проверяет интервьюер

  • Понимание базового синтаксиса Kotlin и infix-функций.
  • Знание стандартной библиотеки и типов данных (Pair, Map).
  • Умение писать идиоматичный код.
  • Понимание разницы между Pair и Map.

Типичные ошибки

  • Называть to оператором - это функция.
  • Путать Pair с Map.
  • Забывать, что to возвращает пару, а не изменяет объекты.
  • Использовать to там, где нужен Map без mapOf.
  • Не знать про деструктуризацию Pair.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью