Fungsi Operator
Lebihkan beban plus, minus, dan lainnya
Fungsi Operator adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.
Apa Itu Pembebanan Operator?
Pembebanan operator memungkinkan tipe Anda merespons simbol seperti + atau -. Anda mendefinisikan fungsi dengan pengubah operator dan nama khusus.
data class Point(val x: Int, val y: Int) {
operator fun plus(o: Point) = Point(x + o.x, y + o.y)
}
fun main() {
println(Point(1, 2) + Point(3, 4))
}Kata Kunci Operator
Pengubah operator memberi tahu kompiler bahwa fungsi ini mendukung sebuah operator. Tanpanya, pemanggilan a + b tidak akan berfungsi.
data class Money(val amount: Int) {
operator fun plus(o: Money) = Money(amount + o.amount)
}
fun main() {
println(Money(5) + Money(3))
}Nama Konvensional
Setiap operator dipetakan ke nama fungsi tetap: plus untuk +, minus untuk -, times untuk *, div untuk /, dan rem untuk %.
data class Vec(val n: Int) {
operator fun times(k: Int) = Vec(n * k)
}
fun main() {
println(Vec(4) * 3)
}Minus dan Perkalian
Anda dapat mendefinisikan beberapa operator pada tipe yang sama.
data class Point(val x: Int, val y: Int) {
operator fun minus(o: Point) = Point(x - o.x, y - o.y)
operator fun times(k: Int) = Point(x * k, y * k)
}
fun main() {
println(Point(5, 5) - Point(1, 2))
println(Point(2, 3) * 2)
}Operator Unari
Minus unari menggunakan unaryMinus; plus unari menggunakan unaryPlus; not mendukung operator !.
data class Temp(val c: Int) {
operator fun unaryMinus() = Temp(-c)
}
fun main() {
println(-Temp(10))
}Penambahan dan Pengurangan
inc mendukung ++, sedangkan dec mendukung --. Keduanya mengembalikan nilai baru dengan tipe yang sama.
data class Counter(val n: Int) {
operator fun inc() = Counter(n + 1)
}
fun main() {
var c = Counter(0)
c++
println(c.n)
}Penugasan Majemuk
plusAssign mendukung += untuk penerima yang dapat diubah. Jika hanya plus yang tersedia, += akan menetapkan ulang variabel tersebut.
class Bag {
val items = mutableListOf<String>()
operator fun plusAssign(item: String) { items.add(item) }
}
fun main() {
val bag = Bag()
bag += "apple"
println(bag.items)
}Operator dengan Tipe Berbeda
Tipe parameter tidak harus sama dengan penerima. Di sini, penskalaan titik dengan Int mengembalikan sebuah titik.
data class Size(val w: Int, val h: Int) {
operator fun times(factor: Int) = Size(w * factor, h * factor)
}
fun main() {
println(Size(2, 3) * 4)
}Sebagai Fungsi Ekstensi
Operator dapat didefinisikan sebagai ekstensi, bahkan untuk tipe yang bukan milik Anda.
data class Point(val x: Int, val y: Int)
operator fun Point.plus(o: Point) = Point(x + o.x, y + o.y)
fun main() {
println(Point(1, 1) + Point(2, 2))
}Merangkai Operator
Operator yang dibebani berlebih dapat dirangkai seperti operator bawaan dan tetap mengikuti prioritas normal.
data class N(val v: Int) {
operator fun plus(o: N) = N(v + o.v)
operator fun times(o: N) = N(v * o.v)
}
fun main() {
val r = N(2) + N(3) * N(4)
println(r.v)
}Tipe Pengembalian Tidak Dibatasi
Sebuah operator dapat mengembalikan tipe apa pun, tetapi mengembalikan tipe yang sama membuat penggunaannya tetap intuitif dan dapat dirangkai.
data class Vec(val x: Int, val y: Int) {
operator fun plus(o: Vec) = Vec(x + o.x, y + o.y)
}
fun main() {
println(Vec(1, 2) + Vec(3, 4))
}Pemeriksaan Singkat
Uji pemahaman Anda tentang fungsi operator.
Rangkuman
Anda telah mempelajari fungsi operator:
- Tandai fungsi dengan
operatordan nama konvensional (plus,minus,times, ...). - Operator unari, penambahan, dan penugasan majemuk didukung.
- Operator dapat menjadi anggota atau ekstensi.
- Mengembalikan tipe yang sama membuat perangkaian tetap intuitif.
data class P(val x: Int) {
operator fun plus(o: P) = P(x + o.x)
}
fun main() {
println((P(2) + P(3)).x)
}Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fungsi Operator” gratis?
Ya — teks lengkap “Fungsi Operator” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Fungsi Operator”?
Lebihkan beban plus, minus, dan lainnya Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Kotlin Academy?
Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Fungsi Operator” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?
Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Fungsi Operator
- Operator Perbandingan
- Indeks dan Invoke
- Praktik Terbaik