- vừa được xem lúc

Tìm hiểu Scope functions trong Kotlin

0 0 87

Người đăng: Saitaman

Theo Viblo Asia

Trong thư viện chuẩn của Kotlin có chứa một số hàm có mục đích duy nhất là thực thi các lệnh trong phạm vi context của một đối tượng . Khi ta gọi một hàm như vậy trên một đối tượng nó sẽ tạo ra cho ta 1 phạm vi tạm thời. Trong phạm vi này thì bạn sử dụng được nó mà không cần gọi tên của nó ra. Mình sẽ tìm hiểu qua 5 loại này : let, run, with, applyalso.

Cơ bản thì các hàm này nó giống nhau đều thực thi trong 1 block. Điều khác biệt lớn của nó ở đây là đối tượng tham chiếugiá trị trả về.

Đây là ví dụ đơn giản về scope function :

Person("Alice", 20, "Amsterdam").let { println(it) it.moveTo("London") it.incrementAge() println(it)
}

Nếu không dùng scope ở đây thì khi bạn muốn sử dụng nó bạn sẽ phải gọi lại tên của nó. Như ví dụ dưới :

val alice = Person("Alice", 20, "Amsterdam")
println(alice)
alice.moveTo("London")
alice.incrementAge()
println(alice)

Các scope function này nó không giới thiệu về kỹ thuật mới, nó chỉ giúp cho code của bạn gọn gàng, đẹp đẽ và dễ đọc hơn.

Như mình đã nói ở trên, do tính chất của nó khá giống nhau nên việc chọn hàm phù hợp cho từng trường hợp hơi phức tạp 1 tí. Nhưng nhìn vào tên của nó bạn cũng liên tưởng được nó dùng khi nào là hợp lý thôi ?. Dưới đây là bảng mô tả chi tiết về sự khác biệt giữa các hàm đó :

Theo như hình trên thì bạn sẽ thấy

letalsoObject reference ( đối tượng tham chiếu) là "it" còn run , withapply đối tượng tham chiều là "this"

Return value giá trị trả về của let, runwith đều là 1 kiểu lambda. Còn lambda là gì bạn google nhé bài này mình chỉ giới thiệu scope function thôi :V còn về applyalso thì trả về chính bản thân nó.

Về phần extension thì có let, run, apply, also là có thể sử dụng dạng extension còn with thì không. Riêng về run thì nó có của 2 dạng như ảnh trên.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 206

- vừa được xem lúc

[Android] Hiển thị Activity trên màn hình khóa - Show Activity over lock screen

Xin chào các bạn, Hôm nay là 30 tết rồi, ngồi ngắm trời chờ đón giao thừa, trong lúc rảnh rỗi mình quyết định ngồi viết bài sau 1 thời gian vắng bóng. .

0 0 107

- vừa được xem lúc

Tìm hiểu Proguard trong Android

1. Proguard là gì . Cụ thể nó giúp ứng dụng của chúng ta:. .

0 0 100

- vừa được xem lúc

Làm ứng dụng học toán đơn giản với React Native - Phần 6

Chào các bạn một năm mới an khang thịnh vượng, dồi dào sức khỏe. Lại là mình đây Đây là link app mà các bạn đang theo dõi :3 https://play.google.com/store/apps/details?id=com.

0 0 68

- vừa được xem lúc

20 Plugin hữu ích cho Android Studio

1. CodeGlance. Plugin này sẽ nhúng một minimap vào editor cùng với thanh cuộn cũng khá là lớn. Nó sẽ giúp chúng ta xem trước bộ khung của code và cho phép điều hướng đến đoạn code mà ta mong muốn một cách nhanh chóng.

0 0 315