mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-25 08:13:29 +03:00
[kotlin/tr] Delegated properties added
This commit is contained in:
parent
04c0ccb2ae
commit
ef1cf7d71e
@ -381,6 +381,63 @@ fun helloWorld(val name : String) {
|
|||||||
|
|
||||||
println(EnumExample.A) // => A
|
println(EnumExample.A) // => A
|
||||||
println(ObjectExample.hello()) // => Merhaba
|
println(ObjectExample.hello()) // => Merhaba
|
||||||
|
|
||||||
|
//Biraz detaylı Kotlin
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Delegated Properties, bir değişken tanımlarken kullanılan birkaç standart yöntemler içerir.
|
||||||
|
* https://kotlinlang.org/docs/reference/delegated-properties.html
|
||||||
|
* En bilinen delegate property metodları: lazy(), observable()
|
||||||
|
* */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Lazy, bir değişkeni ilk erişimde çalıştırılacak olan bir lambda ile tanımlama metodudur.
|
||||||
|
* Sonraki erişimlerde değişkene atanan değer hatırlanır.
|
||||||
|
* Lazy, synchronized bir delegation yöntemidir; değer sadece bir thread içinde hesaplanır,
|
||||||
|
* tüm thread ler aynı değere erişir. Eğer senkronizasyon gerekli değilse, lazy metodu içine
|
||||||
|
* LazyThreadSafetyMode.PUBLICATION paslanabilir.
|
||||||
|
* */
|
||||||
|
|
||||||
|
val lazyValue: String by lazy( {
|
||||||
|
println("bi sn... hesaplıyorum....")
|
||||||
|
"Selam!"
|
||||||
|
})
|
||||||
|
|
||||||
|
println(lazyValue)// bi sn... hesaplıyorum.... Selam!
|
||||||
|
println(lazyValue) // Selam!
|
||||||
|
/*
|
||||||
|
* Observable, bir değişkende olabilecek yeniden atama değişikliklerini dinleme yöntemidir.
|
||||||
|
* İki arguman alır; değişkenin ilk değeri, değiştiğinde çağrılan bir handler metodu. Handler
|
||||||
|
* metodu değişken her değiştiğinde çağırılır.
|
||||||
|
* */
|
||||||
|
var myObservableName: String by Delegates.observable("<isim yok>") {
|
||||||
|
prop, old, new ->
|
||||||
|
println("$old -> $new")
|
||||||
|
}
|
||||||
|
myObservableName = "Baha" //<isim yok> -> Baha
|
||||||
|
myObservableName = "Can" //Baha -> Can
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Eğer değişkenin yeniden atanmasını denetlemek isterek vetoable()
|
||||||
|
* metodunu kullanabiliriz.
|
||||||
|
* */
|
||||||
|
|
||||||
|
var myVetoableName : String by Delegates.vetoable("<isim yok>"){
|
||||||
|
property, oldValue, newValue ->
|
||||||
|
if (newValue.length < 2) {
|
||||||
|
println("Tek harfli isim kabul etmiyoruz!")
|
||||||
|
false
|
||||||
|
} else {
|
||||||
|
println("$oldValue -> $newValue")
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
myVetoableName = "Baha" //<isim yok> -> Baha
|
||||||
|
myVetoableName = "C" //Tek harfli isim kabul etmiyoruz!
|
||||||
|
println(myVetoableName) //Baha
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enum class lar Java'daki enum lara benzerdir.
|
// Enum class lar Java'daki enum lara benzerdir.
|
||||||
|
Loading…
Reference in New Issue
Block a user