На этом шаге мы рассмотрим использование этой возможности именования функций.
В 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 - это зарезервированное ключевое слово.
В Java, однако, is может быть именем метода, потому что такого ключевого слова в этом языке нет. Заключив имя функции в обратные кавычки, можно вызвать метод Java из Kotlin, например:
fun doStuff() { `is`() // Вызов Java-метода 'is' из Kotlin }
В этом случае особенность обратных кавычек помогает поддерживать совместимость с методом Java, который в противном случае был бы недоступен из-за своего имени.
Вторая причина - поддержка более выразительных имен функций, которые можно использовать, например, в тестах. К примеру, такое имя:
fun `users should be signed out when they click logout`() { // Выполнить тест }
fun usersShouldBeSignedOutWhenTheyClickLogout() { // Выполнить тест }
Обратные кавычки позволяют использовать более выразительные имена для тестовых функций, чем стандартные правила именования - "верблюжий регистр с нижним регистром в начале".
На следующем шаге мы приведем несколько заданий для самостоятельного решения.