Hãy xem xét các lớp Java sau:biểu thức Lambda trong Kotlin
public class SomeClass {
public interface Something {
void doSomething();
}
public void call(Something something) {}
}
Trong Kotlin, tôi có thể sử dụng một biểu thức lambda như sau:
SomeClass().call {
// do something
}
Nhưng nếu tôi xác định các phương pháp sau đây trong Kotlin (sử dụng cùng một giao diện):
fun call(something: Something) {}
Sau đó cuộc gọi này:
call {
// do something
}
Sẽ tạo ra lỗi không khớp loại. Tại sao?
Quyết định đó có vẻ lạ đối với tôi. Hãy xem xét 'Danh sách <(T) -> Đơn vị>' vs 'Danh sách>'. Cái thứ hai mang nhiều thông tin hơn. May mắn thay có một cách giải quyết khác: chúng ta có thể sử dụng mã java một cách tự do trong các dự án kotlin. –
Yaroslav
Mặc dù không có nhiều cách sử dụng giải pháp đó: ( – Yaroslav
Các loại chức năng được đặt tên là một câu chuyện khác. Và chúng sẽ được hỗ trợ trong phiên bản tiếp theo của Kotlin –