Шаг 44.
Основы Kotlin.
Функции. Имена функций в обратных кавычках

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

    В Kotlin есть возможность, которая с первого взгляда выглядит немного странно. Она позволяет объявить или вызвать функцию с именем, содержащим пробелы и другие нестандартные символы. Для этого достаточно заключить имя в обратные кавычки `. Например, можно объявить такую функцию:

  fun `**~prolly not a good idea!~**`() {
  .   .   .   .   .
  }

    А дальше можно попытаться вызвать `**~prolly not a good idea!~**`:

  `**~prolly not a good idea!~**`()

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

    Есть несколько веских причин, зачем нужны имена функций в кавычках.

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

    Например, представьте метод Java из старого проекта на Java:

  public static void is() {
  .   .   .   .
  }

    В языке Kotlin is - это зарезервированное ключевое слово.


В стандартной библиотеке Kotlin оператор is используется для проверки типа экземпляра.

    В Java, однако, is может быть именем метода, потому что такого ключевого слова в этом языке нет. Заключив имя функции в обратные кавычки, можно вызвать метод Java из Kotlin, например:

  fun doStuff() {
    `is`() // Вызов Java-метода 'is' из Kotlin
  }

    В этом случае особенность обратных кавычек помогает поддерживать совместимость с методом Java, который в противном случае был бы недоступен из-за своего имени.

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

  fun `users should be signed out when they click logout`() {
    // Выполнить тест
  }
выглядит понятнее, чем:
  fun usersShouldBeSignedOutWhenTheyClickLogout() {
    // Выполнить тест
  }

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

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




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