I, Scope function
- Kotlin standard library cung cấp
Scope function
với mục đích duy nhất là xử lý 1 đoạn code trong context của object. - Scope function lấy tham số là 1 function của 1 object. Khi sử dụng, chúng ta có thể:
- 1, thay thế function đó bằng cách truyền vào
lambada expression
. - 2, truy cập vào object của function mà không cần định nghĩa
name
cho nó.
- 1, thay thế function đó bằng cách truyền vào
- Kotlin cung cấp cho 5 loại scope function là
let
,run
,with
,apply
vàalso
.
II, Phân biệt
- Các loại scope function khác nhau ở 2 điểm:
- 1, Object reference trong lambada function:
this
(lambada receiver) hayit
(lambada argument). - 2, Giá trị trả về: context object hay lambada result.
- 1, Object reference trong lambada function:
- Bảng phân biệt các scope function:
Scope function | Object reference | Return value | is extension function ? |
---|---|---|---|
apply | this | context object | Yes |
also | it | context object | Yes |
let | it | lambada result | Yes |
run | this | lambada result | Yes |
run | No this or it |
lambada result | No: called without the context object. |
with | this | lambada result | No: take context object as an argument |
- Ví dụ 1: sử dụng
apply
,also
vàlet
1 | // `apply` use `this` as object reference |
- Ví dụ 2: sử dụng
run
(run
có 2 version)
1 | // `run` version 1: use `this` as object reference |
- Ví dụ 3: sử dụng
with
1 | val numbers = mutableListOf("one", "two", "three") |
- Chú ý: Mặc dù, scope function làm cho code ngắn gọn hơn trong hầu hết trường hợp nhưng chúng có thể làm cho code khó đọc và dẫn tới error.
Do đó chúng ta nên tránh lồng các scope function vâo với nhau và cần thận khi nối chúng với nhau.