- 17 Kas 2020
- 875
- 464
Kotlin’de String’ler
Merhaba değerli okurlarımız, Kotlin konularımızın dördüncüsünde yeni örneklerle karşınızdayız.
Kotlin’deki dizinler şu type ile temsil edilir: String. Bir dizgi değer ise çoğunlukla çift tırnak (“ ”) içerisindeki karakter dizisini barındırır. Konumuz içerisinde geçen string ifadeleri bazen dizgi olarak kullanılmıştır. Ayrıca Kotlin’de nesneler, bir değişkendeki üye işlevleri ve özellikleri aranabilen niteliktedir.
Örnek:
JavaScript:
val str = “1234 örnek”
Bir dizginin öğelerine indeksleme işlemiyle erişilebilir. Bu karakterler “for” döngüsü ile yenilenebilir:
For ( str’de c ) {
Print ( c )
}
Dizgileri dönüştüren tüm işlemlerden sonra oluşan sonuçları yeni bir string nesnede döndürür ve ayrıca orijinal dizgiyi değiştirmez.
JavaScript:
val dizi = “örnek”
println ( str . büyük harf ()) // yeni bir string nesnesi oluşturun ve yazdırın.
Println ( str ) // Orijinal dizgi aynı kalır.
Dizgilerin birleştirilebilmesi için “+” operatörü kullanılır. bu operatör ayrıca, ilk öge dizgi iken dizgileri diğer türdeki değerlerle birleştirmek için de kullanılır.
JavaScript:
val s = “abc” + 1
println ( s + “def” )
Dizgi Değişmezleri
Kotlin’de dizgi değişmezleri iki türdedir. Bunlar, “escaped strings”, “multiline strings” adını alır.
Escaped strings örneğine bakacak olursak,
JavaScript:
val s = “Hello word!\n”
Escaped, ters eğik çizgiyle ( \ ) yapılıyor.
Multiline strings örneğine bakarsak,
JavaScript:
Val text = “””
For ( c in “ foo” )
Print ( c )
Multiline strings’lerin başındaki boşlukların kaldırılması için trimMargin() işlevi kullanılır. Buna örnek şöyledir:
JavaScript:
val text = “””
|Tell me and forget.
|Teach me and I remember.
|Involve me and I learn.
|(Benjamin Franklin)
“”” trimMargin()
Burada varsayılan olarak kenar boşluğu öneki için şu sembol kullanılır: “ | “. (Bu sembolün klavye kısayolu şu şekildedir: “alt+124”) Yine de başka bir karakter parametre olarak iletilebilir. Mesela; trimMargin ( “>”).
String Templates (Dizgi Şablonları)
Dizgi değişmezleri, şablon ifadeleri de içerebilir. Bir şablon da dolar işaretiyle ( $ ) başlar ve isimden oluşur.
Örnek:
JavaScript:
val i = 10
println (“i = $i”) //prints “i = 10”
Ayrıca, süslü parantez içerisindeki ifadeye örnek şöyledir:
val s = “örnek”
println ( “ $s.uzunluk: ${s.uzunluk}” ) // “örnek.uzunluk 3” değerini yazdırır.
- Dolar işareti ($) ayrıca çok satırlı biz dizgiye (multiline strings), tanımlayıcının başlangıcı olarak bir sembolün önüne şu örnekteki gibi eklenebilir:
JavaScript:
val price = “””
${ ‘ $ ‘ }_9.99
“””
JavaScript:
var computers = 10 // Bazı bilgisayarlar alıcı buluyor.
computers = 8
computers = computers + 3 // ekleme yapılıyor: 11
computers += 7 // ekleme: 18
computers -= 3 // çıkarma: 15
computers *= 2 // çarpma: 30
computers /= 3 // bölme: 10
println ( computers) // 10
-
Bu örnek kodlarda kullanılanlar, atama operatörleridir.
Kategori | Tipler |
Tamsayılar (Integers) | Byte, short, int, long |
İşaretsiz Tamsayılar (Unsigned integers) | Ubyte, ushort, Uint, Ulong |
Kayan nokta sayıları-Kesirli sayılar (Floating-point numbers) | Float, double |
Boole (Değerinin doğru veya yanlış olabileceği değişken türü) | Boolean |
Karakterler | Char |
Dizgeler-dizinler | Strings |
Bir değişkenin başlatılmadan önce bildirilmesi için “:” belirtilir.
Örnek:
JavaScript:
val d : Dahili // değişkenin başlatılmadan bildirilmesi
d = 8 // değişken başlatıldı.
val e : String = “merhaba” // değişken açıkça yazıldı.
Println ( d ) // 8
Println ( e ) // merhaba
//değişkenler başlatıldığı için okunabilecek durumdalar.
Koleksiyonlar
Programlama esnasında verilerin daha sonra işlenmesi amacıyla gruplamak için Kotlin’de koleksiyonlar bulunur. Bu koleksiyonları şöyle sıralayabiliriz:
Listeler: Ögelerin sıralı koleksiyonları
Setler: Hem benzersiz hem sırasız öge koleksiyonları
Haritalar: Benzersiz anahtarlar olması ve sadece bir değerle eşlenmesi
-Bu koleksiyon türleri değiştirilebilir veya salt okunur kalabilir.
Listeler
Ögeleri sıraya göre saklar ve yenilenen ögeleri de barındırabilir. Salt okunur olan liste için “listOf()” işlevi kullanılır. Değişken bir liste oluşturmak içinse mutableListOf() işlevi kullanılır.
Ögelerin türü bildirilirken liste bildiriminden sonra açılı parantez ( <> ) ile tür eklenir.
Örnek:
JavaScript:
val readOnlyShapes = listOf ( “monitör”, “klavye”, “fare” )
println ( ReadOnlyShapes ) // [monitör, klavye, fare]
val sekilerli : MutableList <String> = mutableListOf ( “monitör”, “klavye”, “fare” ) // Açık tür bildirimli değişken liste
println ( Bilgisayar donanım )
Bu değişken listelerdeki istenmeyen değişiklikleri önlemen için, değişken listelerin salt okunur görünümleri atanabilir:
Örnek:
JavaScript:
val shapes: MutableList<String> = mutableListOf( “monitör”, “klavye”, “fare” )
val shapesLocked: List<String> = shapes
Örnek:
JavaScript:
val readOnlyShapes = listOf ( “monitör”, “klavye”, “fare” )
println ( “Listedeki ilk öge: ${readOnlyShapes [0]}” ) // listedeki ilk öge: monitör
-
Bir listedeki ilk veya son ögeyi almak için “.first” ve “.last” işlevleri kullanılır.
Örnek:
JavaScript:
val readOnlyShapes = listOf (“monitör”, “klavye”, “fare” )
println ( “Listedeki ilk öge: ${readOnlyShapes.first()} ) // Listedeki ilk öge: monitör
Not: .first() ve .last() uzantı işlevlerine örnektir. Bir nesne üzerinden bir uzantı işlevi çağırmak için işlevin adı, nesnenin sonuna nokta ( . ) eklenerek yazılmalıdır.
Bir listedeki öge sayını görmek için de “.count()” işlevi kullanılır.
Örnek:
JavaScript:
val readOnlyShapes = listOf ( “monitör”, “klavye”, “fare” )
println ( “Bu listede ${readOnlyShapes.count()} öge var” ) // Bu listede 3 öge var.
Bir ögenin listede var olup olmadığının kontrolünü sağlamak için “in” operatörü kullanılır:
Örnek:
JavaScript:
val readOnlyShapes = listOf (“monitör”, “klavye”, “fare” )
println ( readOnlyShapes’te “ fare ” ) //doğru
Değiştirilebilir listeye öge eklemek veya listeden öge çıkarmak amaçlı olarak “.add()” ve “.remove()” işlevleri kullanılır
Örnek:
JavaScript:
val shapes : MutableList < String > = mutableListOf ( “monitör”, “klavye”, “fare” ) // Listeye “hoparlör”ü ekle.
Shape.add (“ hoparlör” )
Println ( shapes) // [monitör, klavye, fare, hoparlör]
Shapes.kaldır ( “hoparlör” )
Println (shapes) // [monitör, klavye, fare]
Ayar (Set)
Listeler sıralıdır, tekrarlanan ögelere izin verir ama kümeler sırasızdır, yalnızca benzersiz ögeleri barındırır. Salt okunur bir küme oluşturmak için setOf() işlevi; değişken bir küme oluşturmak için mutableSetOf() işlevi kullanılır. setler oluşturulurken depolanan öge türleri Kotlin tarafından anlaşılabilir. Türleri bildirmek için küme bildiriminden sonra açılı parantez “<>” içindeki tür eklenir.
Örnek:
JavaScript:
val readOnlyFruit = seOf ( “elma”, “çilek”, “muz”, “muz” ) //salt okunur küme
val meyve : MutableSet < String > = mutableSetOf (“elma”, “çilek”, “muz”, “muz”)
println ( readOnlyFruit ) // [elma, çilek, muz]
Bu örnekte, kümelerin yalnızca benzersiz ögeleri içermesi gerekliliği yüzünden, yinelenen ögelerin kaldırıldığı görülebilir.
Not: İstenmeyen değişikliklerin önlenmesi için değişken kümelerin salt okunur görünümleri şu şekilde elde edilir:
Örnek:
JavaScript:
val fruit: MutableSet<String> = mutableSetOf(“elma”, “çilek” “muz”, “muz” )
val fruitLocked: Set<String> = fruit
Not: Setler sırasız olduğu için belirli bir dizindeki ögeye erişilemiyor.
Bir kümedeki ögelerin sayısını görmek için “.count()” işlevi kullanılır.
Örnek:
JavaScript:
val readOnlyFruit = setOf ( “elma”, “çilek” “muz”, “muz”)
println ( “Bu sette ${readOnlyFruit.count()} öge var” ) // Bu sette 3 öge var.
Bir ögenin kümede olup olmadığını görmek için “in” operatörü kullanılır:
Örnek:
JavaScript:
val readOnlyFruit = setOf ( “elma”, “çilek”, “muz”, “muz” )
println ( readOnlyFruit’te “çilek” ) //doğru
Değişken kümeye öge eklemek veya bu kümeden öge çıkarmak için “.add()” ve “.remove()” işlevleri kullanılır.
Örnek:
JavaScript:
val fruit : MutableSet < String > = mutableSetOf ( “elma”, “çilek”, “muz”, “muz” )
fruit.add ( “ejder meyvesi” ) // Sete “ejder meyvesi” eklendi.
println ( meyve ) // [elma, çilek, muz, ejder meyvesi]
meyve.kaldır ( “ejder meyvesi” ) // “ejder meyvesi”ni kümeden kaldır.
Println ( fruit ) // [elma, çilek, muz]
Harita (Map)
Haritalar, ögeleri anahtar/değer çiftleri olarak barındırırlar. Yani anahtara başvurarak değere erişilir. Bir listede bir dizin kullanmadan bir değer aramak istersek haritaları kullanabiliriz.
Not: Hangi değer alınmak siteniyorsa isteniyorsa Kotlin’in bu isteği yerine getirebilmesi için haritadaki her anahtarın benzersiz olması gerekir. Ayrıca bir haritada yinelenen değerler de olabilir.
-Salt okunur bir harita oluşturmak için mapOf() işlevi kullanılmalıdır. Değişken bir harita oluşturmak içinse mutableMapOf() işlevi kullanılmalıdır. Depolanan ögelerin türünü açıkça bildirmek için harita bildiriminden sonra açılı parantez ( <> ) içindeki anahtarlar ve değerlerin türleri eklendiğinde Kotlin böylelikle haritalar oluşturulurken depolanan ögelerin türünü çıkarabiliyor. Örneğin; MutableMap<String, Int>. (Anahtarların türü string, değerlerin türü Int)
-Harita oluştururken her anahtar ile ilgili değeri arasında kullanmaktır.
Örnek:
JavaScript:
val readOnlyJuiceMenu = mapOf ( “elma” – 100, “vişne” – 190, “portakal” – 100 ) //salt okunur harita
println ( readOnlyJuiceMenu ) // {elma=100, vişne=190, portakal=100}
val JuiceMenu : MutableMap < String, Int > = mutableMapOf ( “elma” – 100, “çilek” – 190, “muz” – 100 )
println ( meyve suyu menü) // {elma=100, vişne=190, portakal=100}
Not: İstenmeyen değişikliklerin önlenmesi için değiştirilebilir haritaların salt okunur görünümleri şu şekilde elde edilir:
JavaScript:
val juiceMenu: MutableMap<String, Int> = mutableMapOf ( “apple” to 100, “vişne” to 190, “portakal” to 100)
val juiceMenuLocked: Map<String, Int> = juiceMenu
Haritadaki bir değere erişim sağlamak için indekslenmiş erişim operatörü [] anahtarıyla kullanılır.
Örnek:
JavaScript:
val readOnlyJuiceMenu = mapOf ( “elma” – 100, “vişne” – 190, “portakal” -100 ) // Salt okunur harita
println ( “Elma suyunun değeri: ${readOnlyJuiceMenu[“elma”]}” ) // Elma suyunun değeri: 100
- Haritadaki ögelerin sayısını almak için “.count()” işlevi kullanılır.
Örnek:
JavaScript:
val readOnlyJuiceMenu = MapOf ( “elma” – 100, “vişne” – 190, “portakal” – 100 ) //Salt okunur harita
println ( “Bu haritada ${readOnlyJucieMenu.count()} anahtar/değer çifti var” ) // Bu haritanın 3 anahtar/değer çifti var.
Değişken bir haritaya öge eklemek veya bu haritadan öge kaldırmak için “.put()” ve “.remove()” işlevleri kullanılır.
Örnek:
JavaScript:
val JuiceMenu : MutableMap < String, Int > = mutableMapOf ( “elma” – 100, “vişne” – 190, “portakal” – 100 )
JuiceMenu.put ( “coconut”, 150 ) // Haritaya 150 değeri olan coconut anahtarı eklenir.
Println ( juiceMenu ) // {elma=100, vişne=190, portakal=100, Hindistan cevizi=150}
juiceMenu.kaldır ( “portakal” ) // “portakal” anahtarını haritadan kaldırır.
println ( juiceMenu ) //{elma=100, vişne=190, Hindistan cevizi=150}
- Bir anahtarın haritaya eklenip eklenmediğini görmek için “.containsKey()” işlevi kullanılır.
Örnek:
JavaScript:
val readOnlyJuiceMenu = mapOf ( “elma” – 100, “vişne” – 190, “portakal” – 100 )
println ( readOnlyJuiceMenu.includeKey ( “vişne” ))
- Haritanın anahtarlarının veya değerlerinin bir koleksiyona erişmek için “keys” ve “values” özellikleri kullanılır.
Örnek:
JavaScript:
val readOnlyJuiceMenu = mapOf ( “elma” – 100, “vişne” – 190, “portakal”- 100)
println ( readOnlyJuiceMenu.keys ) // [elma, vişne, portakal]
println ( readOnlyJuiceMenu.values ) // [100, 190, 100]
Not: Bir nesnenin özelliğine erişmek için nesnenin sonuna nokta (.) eklenerek özellik adı yazılır.
Bir anahtarın veya değerin haritada olup olmadığını görmek için in operatörü kullanılır.
Örnek:
+
JavaScript:
val readOnlyJuiceMenu = mapOf ( “elma” – 100, “vişne” – 190, “portakal” – 100)
println (readOnlyJuiceMenu’da “portakal”.keys ) //doğru
println ( readOnlyJuiceMenu.values 200 ) // yanlış
Son düzenleme: