Khi đánh dấu một hàm bậc cao là inline, compiler chép thẳng thân hàm và thân lambda vào chỗ gọi thay vì tạo object cho lambda.
Điều này loại bỏ chi phí cấp phát object cho function type ở mỗi lần gọi — hữu ích cho các hàm nhận lambda gọi nhiều lần (như scope function).
kotlin
inline fun measure(block: () -> Unit) {
val start = System.nanoTime()
block()
println(System.nanoTime() - start)
}noinline: đặt trước một tham số lambda cụ thể trong hàminlineđể không inline lambda đó — cần khi bạn muốn lưu lambda vào biến hoặc truyền nó đi tiếp.reified: chỉ dùng được trong hàminline, giữ lại kiểu generic thật lúc runtime (vượt qua type erasure), cho phépT::class,is T,as T. Ví dụ điển hình:inline fun <reified T> Gson.fromJson(json: String): T.
Lưu ý: inline làm phình bytecode nếu lạm dụng cho hàm lớn — dùng cho hàm nhỏ nhận lambda, không phải mọi hàm.