Kotlin de Scope Fonksiyonlar

Recep Güzel
3 min readAug 11, 2023

--

Herkese merhabalar 👋 Bugün başlıktan anlaşılacağı üzerine Kotlin de Scope Fonksiyonlar konusunu anlatmaya çalışacağım .

Hazırsanız başlayalım .

Öncelikle scope ne demek onu öğrenelim .

Scope

Kotlin programlama dilinde “scope” terimi, belirli bir kod bloğunun veya alanın erişim alanını, geçerlilik süresini ve etki alanını ifade eder. Yani, bir değişkenin veya kodun hangi bölümlerde kullanılabilir veya hangi bölümlerde etkili olduğunu belirtir.

Kotlin’de yaygın olarak kullanılan scope (kapsam) türleri şunlardır:

Top-Level Scope (En Üst Düzey Kapsam): Dosyanın en üstünde tanımlanan değişkenler ve fonksiyonlar bu kapsam içinde yer alır.

Class Scope (Sınıf Kapsamı): Bir sınıf içinde tanımlanan özellikler (property) ve fonksiyonlar bu kapsam içinde yer alır.

Function Scope (Fonksiyon Kapsamı): Bir fonksiyon içinde tanımlanan değişkenlerin ve yerel fonksiyonların etki alanını ifade eder.

Block Scope (Bloğun Kapsamı): Kontrol yapıları veya süslü parantezlerle oluşturulan kod bloklarının kapsamını ifade eder.

Lambda Scope (Lambda Kapsamı): Lambda ifadelerinin içinde tanımlanan değişkenlerin ve yerel fonksiyonların etki alanını ifade eder.

fun Example (){
//some operation
}

Yukarıda olan kod boğunda süslü parantezler arası bir scopetur.

it ve this farkı

Scope fonksiyonlarda çokca kullanacağımız it ve this in ne işe yaradığını ve farklarından bahsedelim .

it:

it, bir lambda ifadesi içindeki tek bir parametrenin adını temsil eder. Bu parametre, genellikle bir nesne veya değer üzerinde işlem yaparken kullanılır.

val value = "Example"

value.let{it
println(it) //Example çıktısını verir
}

this:

this, bir lambda ifadesi içindeki bir nesneyi veya değeri temsil eder.

class Person {
var age = 0
var name= "recep"
}

var person = Person()

person.run{this
age = 20
name = "ahmet"
}

Kotlin’da beş farklı scope fonksiyonu vardır: let, run, with, apply ve also.

let

Bu fonksiyon, bir nesneyi alır ve bu nesneyi geçici olarak değişken bir ad altında kullanmanızı sağlar. Daha sonra let bloğu içinde bu değişkeni kullanarak işlemler gerçekleştirebilirsiniz.

val result = "Monster"

result.let{value ->

println(value.length)
}

run

Bu fonksiyon, bir nesne üzerinde işlem yapmanıza olanak tanır ve sonuç olarak bir değer döndürebilir. Aynı zamanda bu fonksiyon içinde oluşturulan yerel değişkenlere de erişebilirsiniz.

val result = "Hello, World!"
val length = result.run {
println(this) // "Hello, World!" çıktısını verir
println(length) // Dizinin uzunluğunu döndürür
}

with

Bu fonksiyon, bir nesne üzerinde işlem yapmanıza olanak tanır, ancak nesneyi tekrar döndürmez. Genellikle null olmayan nesneler üzerinde kullanılır.

class Person {
var name = ""
var age = 0
}

val person = Person()
with(person) {
name = "John"
age = 30
}

apply

Bu fonksiyon, bir nesne üzerinde işlem yapmanıza olanak tanır ve nesneyi değiştirilmiş haliyle geri döndürür. Genellikle nesnenin özelliklerini başlatmak veya güncellemek için kullanılır.

data class Person(var name: String, var age: Int)

val person = Person("Alice", 25)
val modifiedPerson = person.apply {
age = 26
}

also

Bu fonksiyon, bir nesne üzerinde işlem yapmanıza olanak tanır ve nesneyi değiştirilmiş haliyle geri döndürmez. apply fonksiyonuna benzer şekilde kullanılır.

Aşşağıdaki tabloda hangi fonksiyonlarda ne kullanıldığı ve dönüş tipleri belirtilmiştir .

Buraya kadar okuduysanız alkışlarınızı 👏bekliyorum .Her hafta yeni bir yazıyla karşınızdayım .Yazılardan haberdar olmak için beni takip etmeyi unutmayın .

Arkadaşlar umarım açıklayıcı olmuştur. Kendim de yeni öğreniyorum ve öğrendiğim konuları burada yazıyorum . Kalın sağlıcakla 👋👋

Diğer Platformlardan Takip etmek isterseniz;

Linkedln https://www.linkedin.com/in/recepguzel34/

Github https://github.com/recepbrk

Twitter https://twitter.com/RcpbrkGuzel

--

--