Kotlin 1.5.0-RC: Standart ve Test Kütüphanelerindeki Değişiklikler

Kotlin'nin yeni versiyonu, 1.5.0-RC yayınlandı. Bu yeni versiyon ile gelen değişiklere bir göz atalım.

Görsel Referansı


Stabil Unsigned Tam Sayı Türleri


Standart kütüphane, negatif olmayan tam sayı işlemleriyle uğraşmak için yararlı olan unsigned tamsayı API'sini içerir:

  • Unsigned numara türleri: UInt, ULong, UByte, UShort ve dönüşümler gibi ilgili işlevler.

  • Toplama türleri: İşaretsiz tam sayıların dizileri, aralıkları ve ilerlemeleri: UIntArray, UIntRange ve diğer türler için benzer container'lar.

Unsigned tam sayı türleri, Kotlin 1.3'ten beri Beta'da mevcut durumda bulunuyor. Şimdi, unsigned tam sayı türleri ve işlemleri kararlı olarak sınıflandırılarak, gerçek hayattaki projelerde kullanmak için tercihe bağlı olmadan kullanılabilir ve güvenli hale getiriliyor.


Yani, yeni kararlı API'ler; unsigned tam sayı türleri, unsigned tam sayı türlerinin aralıkları ve ilerlemeleri unsigned tam sayı türleriyle çalışan işlevler oluyor.

val zero = 0U // Define unsigned numbers with literal suffixes
val ten = 10.toUInt() // or by converting non-negative signed numbers
//val minusOne: UInt = -1U // Error: unary minus is not defined
val range: UIntRange = zero..ten // Separate types for ranges and progressions

for (i in range) print(i)
println()
println("UInt covers the range from ${UInt.MIN_VALUE} to ${UInt.MAX_VALUE}") // UInt covers the range from 0 to 4294967295

Java.nio.file.Path İçin Uzantılar


Kotlin, java.nio.file.Path için uzantı işlevleri aracılığıyla, modern engellemesiz Java IO'yu Kotlin deyimsel bir tarzda kullanmanın bir yolunu sunuyor.

import kotlin.io.path.*
import java.nio.file.Path

fun main() {
    // construct path with the div (/) operator
    val baseDir = Path("/base")
    val subDir = baseDir / "subdirectory"

    // list files in a directory
    val kotlinFiles = Path("/home/user").listDirectoryEntries("*.kt")
    // count lines in all kotlin files
    val totalLines = kotlinFiles.sumOf { file -> file.useLines { lines -> lines.count() } }
}

Bu uzantılar, Kotlin 1.4.20'de deneysel bir özellik olarak tanıtıldı ve artık bir isteğe bağlı olmaksızın kullanılabiliyor. Kullanabileceğiniz işlevlerin listesi için kotlin.io.path paketine bakabilirsiniz.


Büyük ve Küçük Harf İçin Yerel Dil Ayarından Bağımsız API


Birçoğunuz dizelerin ve karakterlerin durumunu değiştirmek için stdlib işlevlerini biliyorsunuz: toUpperCase(), toLowerCase(), toTitleCase(). Genellikle iyi çalışıyorlar ancak farklı platform yerel dil ayarları söz konusu olduğunda baş ağrısına neden olabiliyor - hepsi yerel duyarlı, bu da sonuçlarının yerel dil ayarına bağlı olarak farklılık gösterebileceği anlamına geliyor. Örneğin, "Kotlin" .toUpperCase () ne döndürür? Açıkçası KOTLIN diyorsunuz. Ama Türkçe'de büyük harfte İ, yani sonuç farklı: KOTLİN.


Artık dizelerin ve karakterlerin durumunu değiştirmek için yeni bir yerel dil ayarından bağımsız API var: büyük harf(), küçük harf(), titlecase() uzantıları ve bunların * Char() karşılıkları. v1.4.30'da ön izlemesini zaten denemiş olabilirsiniz.

// replace the