Ý nghĩa của dấu cộng trước một phương pháp Kotlin là gì?


8

Tôi là studiyng Kotlin và đang xem AndroidDevSummit, cụ thể hơn là bài thuyết trình "Undestanding Compose" từ Leland Richardson.

Trong khi trình bày (lúc 28 phút 26 giây), anh ta đã hiển thị đoạn mã sau:

@Composable
fun App(items: List<String>, query: String) {
    val results = +memo(items, query) {
        items.filter { it.matches(query) }
    }
    // ...
}

Dấu "+" cộng trước phương thức "ghi nhớ" là gì?


1
Khi quá tải toán tử được sử dụng như thế này, bạn có thể nhấp Ctrl trong Intellij / Android Studio để chuyển đến khai báo hàm để xem nó làm gì.
Tenfour04

Ok, @ Tenfour04, cảm ơn bạn, nhưng đó chỉ là một tính năng và không phải là mục đích của dấu "cộng", đúng không?
Jose Silva

1
Đúng. Tôi chỉ nói rằng bạn có thể sử dụng điều đó để tìm hiểu chức năng mà nhà điều hành đang gọi.
Tenfour04

1
Có, bạn có thể chuyển sang khai báo unaryPlus, nhưng điều này không có nghĩa là bạn có thể hiểu mục đích của nó. Ở đó bạn sẽ thấy chỉ cần bình luận "Giải quyết hiệu ứng và trả về kết quả."
Con trỏ Null

Câu trả lời:


2

+là một loại giống như một toán tử gọi cho các hiệu ứng. Các hàm trả về hiệu ứng chỉ trả về một đối tượng cho hiệu ứng và + nói, "thêm nó vào thành phần ở đây"

bởi Adam Powell trên Kotlin Slack

Các chủ đề đầy đủ về chùng kotlin

Nhà +điều hành sẽ bị xóa trong tương lai, đối với các tiểu bang, có thể sẽ sử dụng Đại biểu tài sản, đại loại như thế này:var myState by state { "value" }


2
Cảm ơn bạn @DevSrSouza, nhưng bạn có thể làm rõ những gì nó làm và hiệu ứng là gì? Các liên kết của Slack không mở.
Jose Silva

1
Từ một cuộc nói chuyện mà tôi nghe cách đây nhiều ngày, Hiệu ứng là bất cứ điều gì có thể thay đổi trong thế giới thực, giống như một giá trị mà bạn có thể thay đổi ở vị trí khác của ứng dụng và ảnh hưởng đến giao diện người dùng của bạn. hãy thử tham gia bằng liên kết này: slack.kotlinlang.org
DevSrSouza
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.