Kotlin – Lambdas Nedir ?

Kotlin Wallpaper

Lambda ifadesi basitçe adı olmayan bir işlevdir; bir değişkene atayabilir ve diğer herhangi bir değer gibi iletebilirsiniz. Bu bölüm size lambdaların ne kadar kullanışlı ve kullanışlı olabileceğini göstermektedir.

Lambdas hakkında temel bilgiler

Lambdalar aynı zamanda anonim işlevler olarak bilinir ve adlarını, tüm işlevlerin anonim olduğu Alonzo Kilisesi’nin lambda taşından türetir. Lambda’lar da kapanışlarla eş anlamlıdır ve diğer birçok programlama dilinde bu isme sahiptir.

Kapanışlar öyle adlandırılır çünkü kapamanın kendi kapsamındaki değişkenleri ve sabitleri “close over ” yeteneğine sahiptir. Bu, bir lambda’nın iç içe bir işlev olarak işlev gören çevredeki bağlamdan herhangi bir değişkenin veya sabitin değerine erişebileceği, depolanabileceği ve işlenebileceği anlamına gelir. Bir lambda gövdesinde kullanılan değişkenlerin ve sabitlerin lambda tarafından yakalandığı söylenir.

“Lambdalar isimsiz fonksiyonlarsa, o zaman onları nasıl kullanıyorsunuz?” Diye sorabilirsiniz. Bir lambda kullanmak için, öncelikle başka bir fonksiyonun argümanı da dahil olmak üzere bir değişkene veya sabite atamanız gerekir.

Lamda tutabilecek bir değişkenin açıklaması:

var multiplyLambda: (Int, Int) -> Int

multiplyLambda iki Int değeri alır ve bir Int döndürür. Bunun bir işlev için değişken bildirimi ile tamamen aynı olduğuna dikkat edin. Söylendiği gibi, bir lambda sadece adı olmayan bir işlevdir. Lambda tipi bir fonksiyon tipidir.

Aşağıdaki gibi bir değişkene lambda atarsınız:

 multiplyLambda = { a: Int, b: Int -> Int 
a*b }

Bu bir işlev bildirimine benziyor, ancak ince farklılıklar var. Aynı parametre listesi var, ancak -> sembolü dönüş türünü gösterir. Lambda gövdesi dönüş tipinden sonra başlar. Lambda ifadesi, vücuttaki son ifadenin değerini döndürür.

Lambda değişkeniniz tanımlandığında, tıpkı bir işlevmiş gibi kullanabilirsiniz, örneğin:

   val lambdaResult = multiplyLambda(4, 2) // 8

Beklediğiniz gibi, sonuç 8’e eşit. Yine de, ince bir fark var. Bir lambda, argümanlar için adların kullanılmasına izin vermez; örneğin, multiplyLambda yazamazsınız (a = 4, b = 2). İşlevlerden farklı olarak, bağımsız değişkenleri etiketlemek için parametre adlarını kullanamazsınız.

Örnek bir lambda kullanımı incelemesi

fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
  val result = operation(a, b)
  println(result)
  return result
}

Bu, Int değerlerini ilk iki parametre olarak alan operaOnNumbers adlı bir işlevi bildirir. Üçüncü parametre operation olarak adlandırılır ve bir işlev türündedir. operaOnNumbers’ın kendisi bir Int döndürür.

Daha sonra, şu şekilde bir lambda ile operaOnNumbers kullanabilirsiniz:

val addLambda = { a: Int, b: Int ->
a+b }
operateOnNumbers(4, 2, operation = addLambda) // 6

Unutmayın, lambdalar isimsiz işlevlerdir. Dolayısıyla, operaOnNumbers’ın üçüncü parametresi olarak bir işlevi de aktarabileceğinizi öğrenmek sizi şaşırtmamalı, şöyle:

 fun addFunction(a: Int, b:Int) = a + b
operateOnNumbers(4, 2, operation = ::addFunction) // 6

İşlem bir işlev veya lambda olsun, operaOnNumbers da aynı şekilde çağrılır. :: işleci referans işlecidir; bu durumda, programa geçerli kapsamda addFunction bulmasını söyler.
Lambda sözdiziminin gücü tekrar işe yarar.

 operateOnNumbers(4, 2, operation = { a: Int, b: Int ->
a+b })

Lambda’yı tanımlamanıza ve yerel bir değişkene veya sabite atamanıza gerek yoktur. Lambda’yı bir argüman olarak fonksiyona geçirdiğiniz yerde beyan edebilirsiniz!

Lambdalara hızlı bir giriş ile temel bilgi edindik. Bir sonraki yazılarımda görüşmek üzere.

Etiketler:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir