Умереть Подпись функции в программировании представляет собой своего рода уникальный идентификатор функции. Например, с помощью сигнатуры функции можно однозначно идентифицировать и вызвать функцию в группе функций с одинаковым именем.

Сигнатура функции в Котлине всегда состоит из Имя функции а также их Список параметров, в том числе номер, Виды и Порядок параметров, так же хорошо как тип возвращаемого значения.

Следующий пример иллюстрирует эти утверждения:

В этом примере три функции имеют одно и то же имя. СуммаОфНумберс, но отличаются другими компонентами подписи и поэтому четко различаются и распознаются компилятором Kotlin.

  • Сигнатура первой функции sumOfNumbers(Int, Int) -> Int, поскольку у них есть два параметра типа Int есть и один Int возвращается как возвращаемое значение.
  • Сигнатура второй функции sumOfNumbers(Double, Double) -> Double, поскольку у них есть два параметра типа двойной есть и один двойной возвращается как возвращаемое значение.
  • Сигнатура третьей функции sumOfNumbers(Int, Double) -> Double, поскольку у него есть параметр типа Int и параметр типа двойной есть и один двойной возвращается как возвращаемое значение.

В Котлине есть несколько случаев использования сигнатуры функции. Один из них — перегрузка функций.

Перегрузка функций

Используя разные сигнатуры, вы можете определять функции с одинаковым именем, но выполняющие разные задачи в коде. Этот подход называется Перегрузка функций (Английский: Перегрузка функций) назначено. Это позволяет разработчикам создавать более гибкие, согласованные и повторно используемые структуры кода и помогает улучшить читаемость и понятность кода.

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

В примере ниже показано, как работает перегрузка функций:

В этом примере было три функции с одинаковым именем. СуммаОфНумберс заявили, что имеют разные подписи. При вызове функции СуммаОфНумберс Компилятор автоматически выбирает необходимую версию для исполнения в зависимости от типа, количества и порядка параметров. Тип возвращаемого значения не учитывается. 

Чтобы понять это, мы теперь объявляем две функции, сигнатуры которых различаются только типом возвращаемого значения:

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

Оставить комментарий

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