Tur Pustaka Standar

kotlin.io, kotlin.text, dan bagian penting pustaka standar.

Daftar isi

Pustaka standar Kotlin adalah kumpulan fungsi dan tipe bawaan yang disertakan bersama compiler, sehingga tersedia pada setiap proyek tanpa dependensi tambahan. Isinya tersusun atas paket-paket kecil yang masing-masing melayani satu kebutuhan, misalnya masukan dan keluaran, pengolahan string, range, dan pengukuran waktu. Topik ini menelusuri empat paket yang paling sering dipakai, yaitu kotlin.io, kotlin.text, kotlin.ranges, dan kotlin.system, dengan program kecil yang dijalankan dari terminal.

kotlin.io#

Paket kotlin.io memuat fungsi masukan dan keluaran tingkat atas. Fungsi println dan readln yang telah digunakan pada modul dasar bahasa sebenarnya berasal dari paket ini, dan keduanya memiliki pasangan yang sering terlupakan, yaitu print yang tidak menambahkan baris baru serta readln yang mengembalikan satu baris masukan tanpa karakter baris barunya.

kotlin io.kt
// Fungsi keluaran dan masukan dari paket kotlin.io
import kotlin.io.println
import kotlin.io.print
import kotlin.io.readln

fun main() {
    val nama = readln()
    val nilai = readln().toInt()
    print("Status: ")
    println("$nama, nilai $nilai, lulus = ${nilai >= 75}")
}

Perintah berikut memberikan dua baris masukan melalui pipe agar eksekusinya dapat diulang dengan hasil yang sama.

bash
export JAVA_HOME=/home/kal/my-project/tools/jdk-merged
export PATH=$JAVA_HOME/bin:/home/kal/my-project/tools/kotlinc/bin:$PATH
export STDLIB=/home/kal/my-project/tools/kotlinc/lib/kotlin-stdlib.jar
kotlinc io.kt -d io.jar
# dua baris masukan diberikan melalui pipe agar eksekusi dapat diulang
printf "Ali\n85\n" | java -cp "io.jar:$STDLIB" IoKt
text Keluaran
Status: Ali, nilai 85, lulus = true

Keluaran terdiri atas satu baris karena print menulis tanpa baris baru, kemudian println melanjutkan pada baris yang sama. Pemanggilan readln mengembalikan String, sehingga toInt() diperlukan untuk mendapat nilai numerik, dan hasil perbandingannya dicetak sebagai true karena 85 melewati ambang 75.

kotlin.text#

Paket kotlin.text memuat fungsi perluasan pada String yang meliputi pengisian, pemotongan, dan pemecahan. Tiga fungsi berikut mewakili pola yang paling sering muncul, yaitu padEnd untuk melapis teks sampai lebar tertentu, takeLast untuk mengambil sejumlah karakter terakhir, dan split untuk memecah teks pada pemisah tertentu.

kotlin teks.kt
// Tiga fungsi dari paket kotlin.text
import kotlin.text.padEnd
import kotlin.text.split
import kotlin.text.takeLast

fun main() {
    val kode = "ARS-2024-11"
    println(kode.takeLast(2))
    println("Laporan".padEnd(10, '.'))
    println("arsip,cadangan,bulanan".split(','))
}
bash
export JAVA_HOME=/home/kal/my-project/tools/jdk-merged
export PATH=$JAVA_HOME/bin:/home/kal/my-project/tools/kotlinc/bin:$PATH
export STDLIB=/home/kal/my-project/tools/kotlinc/lib/kotlin-stdlib.jar
kotlinc teks.kt -d teks.jar
java -cp "teks.jar:$STDLIB" TeksKt
text Keluaran
11
Laporan...
[arsip, cadangan, bulanan]

Baris pertama mengambil dua karakter terakhir dari kode arsip, yaitu nomor bulan. Baris kedua melapis kata Laporan dengan tanda titik sampai panjangnya sepuluh karakter, kebiasaan yang berguna untuk menyusun kolom teks berlebar tetap. Baris ketiga memecah teks pada koma dan mencetak List hasilnya, sehingga format koma terlihat langsung sebagai elemen yang terpisah.

kotlin.ranges#

Paket kotlin.ranges memuat tipe range beserta fungsi pembentuknya. Notasi .. membentuk rentang naik, downTo membentuk rentang turun, step mengatur lompatan, dan until menyingkirkan batas atasnya. Operator in memeriksa keanggotaan, sehingga range dipakai baik untuk perulangan maupun untuk pernyataan bersyarat.

kotlin rentang.kt
// Range dari paket kotlin.ranges
import kotlin.ranges.downTo
import kotlin.ranges.step
import kotlin.ranges.until

fun main() {
    println((1..5).joinToString(" "))
    println((10 downTo 6 step 2).joinToString(" "))
    println((0 until 3).joinToString(" "))
    println('c' in 'a'..'f')
    println(17 in 12..17)
}
bash
export JAVA_HOME=/home/kal/my-project/tools/jdk-merged
export PATH=$JAVA_HOME/bin:/home/kal/my-project/tools/kotlinc/bin:$PATH
export STDLIB=/home/kal/my-project/tools/kotlinc/lib/kotlin-stdlib.jar
kotlinc rentang.kt -d rentang.jar
java -cp "rentang.jar:$STDLIB" RentangKt
text Keluaran
1 2 3 4 5
10 8 6
0 1 2
true
true

Rentang pertama berjalan dari 1 sampai 5 dengan batas atas tercakup, sedangkan until pada rentang ketiga mencetak 0 sampai 2 tanpa menyertakan batas atasnya. Rentang kedua menunjukkan kombinasi downTo dengan step 2 yang menghasilkan 10, 8, lalu 6. Dua baris terakhir memeriksa keanggotaan pada rentang karakter dan rentang angka, bentuk pemeriksaan yang lebih ringkas daripada membandingkan dua ujungnya secara manual.

kotlin.system#

Paket kotlin.system menyediakan fungsi utilitas di sekitar proses dan waktu, dan yang paling sering dipakai adalah measureTimeMillis. Fungsi tersebut menjalankan blok yang diberikan, mengukur lamanya dalam milidetik, lalu mengembalikan hasilnya sebagai Long. Nilainya berubah-ubah antar eksekusi karena bergantung pada keadaan mesin, sehingga program berikut hanya menampilkan hasil perhitungan di dalam blok dan validitas nilai waktunya.

kotlin waktu.kt
// Mengukur waktu eksekusi dengan measureTimeMillis
import kotlin.system.measureTimeMillis

fun main() {
    var hitungan = 0
    val waktu = measureTimeMillis {
        repeat(1_000_000) { hitungan += 1 }
    }
    println("hitungan: $hitungan")
    println("waktu >= 0: ${waktu >= 0}")
}
bash
export JAVA_HOME=/home/kal/my-project/tools/jdk-merged
export PATH=$JAVA_HOME/bin:/home/kal/my-project/tools/kotlinc/bin:$PATH
export STDLIB=/home/kal/my-project/tools/kotlinc/lib/kotlin-stdlib.jar
kotlinc waktu.kt -d waktu.jar
java -cp "waktu.jar:$STDLIB" WaktuKt
text Keluaran
hitungan: 1000000
waktu >= 0: true

Baris pertama menegaskan bahwa blok di dalam measureTimeMillis benar-benar dijalankan sampai selesai, yaitu satu juta kali penambahan. Baris kedua menunjukkan tipe kembaliannya adalah bilangan bulat milidetik yang dapat dibandingkan seperti Long biasa. Bila angka sesungguhnya diperlukan, mencetak nilai waktu secara langsung tetap sah pada sesi kerja sendiri, dengan pengertian bahwa angkanya berbeda pada setiap eksekusi.

Ringkasan#

  • Pustaka standar disertakan bersama compiler dan tersusun atas paket seperti kotlin.io, kotlin.text, kotlin.ranges, dan kotlin.system.
  • print menulis tanpa baris baru dan readln mengembalikan satu baris masukan sebagai String, dengan pasangan null-safe readlnOrNull dan toIntOrNull.
  • padEnd, takeLast, dan split menutup kebutuhan pemformatan serta pemecahan string yang paling umum.
  • Range dibentuk dengan .., downTo, step, dan until, sedangkan in memeriksa keanggotaannya, dan measureTimeMillis mengukur lama eksekusi blok dalam milidetik.

Referensi#