Operator Overloading trong Kotlin
Bài đăng này đã không được cập nhật trong 3 năm
Ở Kotlin, như trong mọi ngôn ngữ, chúng ta sử dụng +, -, *, / để thực hiện các hoạt động nhất định. Kotlin đã sửa số và các toán tử tượng trưng mà chúng ta có thể dễ dàng sử dụng trên bất kỳ lớp nào. Tạo ra một hàm với một tên dành riêng sẽ được mapped tới symbol. Overloading các toán tử này sẽ làm tăng sự đơn giản của code.
Một số toán tử cơ bản:
Toán Tử Unary
Toán Tử Binary
Loại mảng
Toán tử So sánh
Ví dụ:
fun equals(other: Any?): Boolean
Chức năng Invoking
Ví dụ về Operator Overloading
Toán tử +
fun main(args: Array<String>) {
val p1 = Point(3, -8)
val p2 = Point(2, 9)
var sum = Point()
sum = p1 + p2
println("sum = (${sum.x}, ${sum.y})")
}
class Point(val x: Int = 0, val y: Int = 10) {
// overloading plus function
operator fun plus(p: Point) : Point {
return Point(x + p.x, y + p.y)
}
}
Khi chạy chương trình, nó sẽ cho ra output:
sum = (5, 1)
Toán tử --
fun main(args: Array<String>) {
var point = Point(3, -8)
--point
println("point = (${point.x}, ${point.y})")
}
class Point(var x: Int = 0, var y: Int = 10) {
operator fun dec() = Point(--x, --y)
}
Khi chạy chương trình, nó sẽ cho ra output:
point = (2, -9)
Phải nhớ rằng
operator fun dec() = Point(--x, --y)
tương đương với
operator fun dec(): Point {
return Point(--x, --y)
}
Kết luận
Việc sử dụng operator overloading của Kotlin sẽ giúp chúng ta đơn giản code và làm chúng dễ đọc hơn bằng cách sử dụng các symbols chuẩn, chúng ta có thể sử dụng chúng dễ dàng ở bất kỳ class nào. Bài viết đến đây là hết, cảm ơn các bạn đã đọc.
All rights reserved