Trong bài viết này, bạn sẽ học cách mở rộng một class với các chức năng mới bằng cách sử dụng các hàm mở rộng.
Giả sử, bạn cần mở rộng một class với hàm mới. Trong hầu hết các ngôn ngữ lập trình, bạn có thể dẫn xuất một class mới hoặc sử dụng một số loại mẫu thiết kế để thực hiện việc này.
Tuy nhiên, trong Kotlin, bạn cũng có thể sử dụng hàm mở rộng để mở rộng một class với hàm mới. Về cơ bản, một hàm mở rộng là một hàm thành viên của một class được định nghĩa bên ngoài class đó.
Ví dụ: bạn cần sử dụng một hàm cho class String trả về một chuỗi mới với ký tự đầu tiên và ký tự cuối cùng bị xóa đi; hàm này chưa có sẵn trong class String. Bạn có thể sử dụng hàm mở rộng để thực hiện việc này.
Ví dụ: Xóa ký tự đầu tiên và cuối cùng của chuỗi
fun String.removeFirstLastChar(): String = this.substring(1, this.length - 1)
fun main(args: Array<String>) {
val myString= "Hello Everyone"
val result = myString.removeFirstLastChar()
println("First character is: $result")
}
Khi bạn chạy chương trình, kết quả sẽ là:
First character is: ello Everyon
Ở đây, một hàm mở rộng tên là removeFirstLastChar()được thêm vào class String.
Tên class là kiểu người nhận (cụ thể trong ví dụ của chúng ta là class String). Từ khóa this bên trong hàm mở rộng đề cập đến đối tượng nhận.
Nếu bạn cần tích hợp Kotlin trên dự án Java, bạn không cần phải sửa đổi toàn bộ code thành code trong Koltin. Bạn chỉ cần sử dụng các hàm mở rộng để thêm các chức năng.
Tuy nhiên, ta khó tránh khỏi việc lạm dụng vai trò của các hàm mở rộng. Chúng tôi khuyên bạn nên đọc các nguồn tài liệu này để tìm hiểu rõ khi nào nên sử dụng hàm mở rộng và khi nào thì không nên:
- Các hàm mở rộng và thuộc tính mở rộng có xấu không?
- Làm thế nào để lạm dụng các hàm mở rộng trong Kotlin?
Tài liệu từ cafedev:
- Full series tự học Kotlin từ cơ bản tới nâng cao tại đây nha.
- Ebook về Kotlin tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!