Intereting Posts
Ошибка: ошибка: разрешены только безопасные (?.) Или непустые (!!.) Вызовы в приемнике с нулевым значением типа View? Kotlin & Spring Boot @ConfigurationProperties Как вручную подключить Kotlin fun с помощью <reified T: Any> В android kotlin, используя библиотеку степпера, передавая пользовательские значения переключателей по нескольким фрагментам, которые будут использоваться на сводной странице Kotlin – Использование Realm Module в android Фрагмент Котлина Основная архитектура клиентской игры Kotlin Как перечислить аннотации полей в Котлине? Kotlin Android-Как реализовать CheckBox.OnCheckedChangeListener? компилировать смешанный код Kotlin и Java из командной строки Весна 5 и Котлин 1.1 Корутинцы: Тип rx.Седулер отсутствует Простой способ отображения моделей данных в модели домена общие интерфейсы с методами reified что это "it <= ''" в функции строчной строки означает здесь Плагин Kotlin выйдет из строя Android Studio

Когда можно опустить возвращаемый тип в Котлин

У меня есть следующая функция в Котлине:

fun max(a: Int, b: Int): Int { return if (a > b) a else b } 

которые могут быть упрощены:

 fun max(a: Int, b: Int) = if (a > b) a else b 

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

Функции с блоком блока должны всегда явно указывать типы возвращаемых данных, если только они не предназначены для возврата Unit.

Если функция не возвращает никакого полезного значения, ее тип возврата – Unit . Unit – это тип с одним значением – Единица. Это значение не нужно возвращать явно

 fun printHello(name: String?): Unit { if (name != null) println("Hello ${name}") else println("Hi there!") // `return Unit` or `return` is optional } 

Объявление типа возвращаемого Unit также является необязательным. Вышеприведенный код эквивалентен

 fun printHello(name: String?) { ... } 

когда тип возврата – Unit

 fun printHello(): Unit { print("hello") } 

такой же как

 fun printHello() { print("hello") } 

также, является тем же самым, что и

 fun printHello() = print("hello") 

Обычно функция должна объявлять ее возвращаемым типом. Но если некоторые функции состоят из одного выражения, мы можем опустить фигурные скобки и тип возвращаемого значения и использовать символ = перед выражением, а не ключевое слово return. Этот тип функций называется Single Expression Functions .

Пример:

 fun add(a: Int, b: Int): Int { return a + b } 

Этот код можно упростить, чтобы:

 fun add(a: Int, b: Int) = a + b 

Компилятор заставит вас сделать это.