Inline class nedir ?

 

Daha önce hiç value-based class diye bir şey duydunuz mu? Aslında olay çok basit ama çok etkili haydi beraber inceleyelim 😎


Oca 05, 2022
hamurcuabi

0
131

Senaryomuz şöyle, 

Bir çalışanımız var ve bunun bir Id 'si var. Bu Id ile para yolladığımız bir func yazalım.


fun sendMoneyToUser(money: Int, userId: Int) { // Para gönderiliyor..}

val userId = 1

// dikkat edin userId ve paranın yerlerini yanlış yazdım :(
sendMoneyToUser(userId, 1_000)

Yukardaki durumun korunabilimesi gerekiyor. Çünkü yanlış yazmama rağmen çalışabilmesi ve başka bir çalışana para gitmesi çok olasıdır. Peki nasıl çözebiliriz ?

// inline class 
@JvmInline
value class UserId(val id: Int)

fun sendMoneyToUser(salary: Int, UserId: Int) { // Para gönderiliyor..} 

val userId = UserId(1)
    
sendMoneyToUser(userId, 1_000) // Compile time error. Burası çalışmaz bile :)

Yukardaki koda bakınca aslında çok basitçe wrapper bir class yarattık.

  • Sadece bir property ile primary constructer'ı olabilir ! 

  • const val olarak kullanılamazlar!

  • init constructer'ları vardır ve require özelliği ile run time validation yapılabilir.

Daha fazla detay için https://kotlinlang.org/docs/inline-classes.html sayfasını ziyaret edebilirsiniz. Sağlıklı günler

 

class inline kotlin

Benzer Yazılar


Yorumlar