Конечная лямбда и конечная запятая — это две важные функции Kotlin, которые вы должны знать, если вы новичок в Kotlin!

Эта статья была первоначально опубликована на vtsen.hashnode.dev 6 августа 2022 г.

Конечная лямбда это что-то новое в Kotlin, чего нет в других языках программирования. По крайней мере, я не знаю ни одного другого языка программирования, поддерживающего его.

Когда вы видите такой код:

var result = operateOnNumbers(a, b) { input1, input2 ->
    input1 + input2
}
println(result)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Это в основном означает operateOnNumbers() имеет 3 параметра. Последний параметр — это определение функции, которое вы обычно либо передаете в ссылке на функцию, либо лямбда.

var result = operateOnNumbers(
    input1 = a,
    input2 = b,
    operation = { input1, input2 ->
        input1 + input2
    }
)
println(result)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Почему-то я до сих пор не привыкаю к ​​этому синтаксису лямбда-выражения. Похоже на реализацию функции.

Поэтому мой разум всегда должен автоматически отображать это (код за скобками на самом деле является последним параметром функции) каждый раз, когда я вижу синтаксис Trailing Lambda.

Подписание и реализация operateOnNumbers() выглядит так:

fun operateOnNumbers(
    input1: Int,
    input2: Int,
    operation: (Int, Int) -> Int): Int {

    return operation(input1, input2)
}
Войти в полноэкранный режим

Выйти из полноэкранного режима

С другой стороны, конечные запятые довольно распространен в другом языке.

** С завершающей запятой**

var result = operateOnNumbers(
    a, 
    b, // trailing comma here
) { input1, input2 ->
    input1 + input2
}
Войти в полноэкранный режим

Выйти из полноэкранного режима

** Без запятой в конце**

var result = operateOnNumbers(
    a, 
    b // no trailing comma here
) { input1, input2 ->
    input1 + input2
}
Войти в полноэкранный режим

Выйти из полноэкранного режима

Преимущество его использования заключается в упрощении сравнения и слияния. Для меня это делает мою жизнь копирования и вставки проще. Да, я много копирую и вставляю!


Вывод

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


Смотрите также