2016-03-25 54 views
10

Giả sử tôi có một vài phương pháp mở rộng cho "MyClass". Câu hỏi của tôi là, cách tốt nhất để tổ chức/lưu trữ các phương pháp này là gì? Chúng có nên được đưa vào tập tin Kotlin "MyClassExtensions" không?Cách tổ chức các phương thức mở rộng Kotlin

Tôi đã cố gắng đóng gói các phương thức này trong một lớp, nhưng sau khi nhập lớp, tôi dường như không thể tìm ra cách sử dụng/truy cập các phương thức mở rộng.

Chỉnh sửa: Để làm rõ, tôi đã không yêu cầu trợ giúp để gọi tệp có chứa các phương pháp mở rộng. Tôi đã hỏi về các phương pháp hay cách tiếp cận tốt nhất để lưu trữ/tổ chức các phương pháp như vậy. I E. chúng nên được đưa vào các tệp kotlin một cách đơn giản, hoặc chúng nên được đóng gói trong một lớp. Tôi đến từ một nền Java, vì vậy tôi được sử dụng để lưu trữ các công cụ trong các lớp học.

+2

https://kotlinlang.org/docs/reference/extensions.html#scope-of-extensions –

+0

Cảm ơn, tôi phải vô tình bỏ lỡ phần này trong tài liệu. – pjozsef

+0

'phương pháp hay nhất/cách tiếp cận để lưu trữ/tổ chức các phương pháp đó' làm cho câu hỏi này rất ý kiến ​​dựa trên – voddan

Trả lời

3

Theo như tôi quan tâm, bạn nên đặt chúng vào tệp tiện ích, như bạn đã làm trong cơ sở mã Java trước đây.

Nhưng đề cập đến, bạn không còn cần phải đưa chúng vào một lớp học nữa. Các chức năng cấp cao nhất là lựa chọn tốt nhất.

Bạn có thể tham khảo thư viện chuẩn kotlin hoặc một số dự án nguồn mở như anko, đó sẽ là ví dụ hay.

Trong trường hợp của tôi, tôi đặt phần mở rộng của một lớp thành một tập tin có cùng tên của tập tin gốc trong gói khác, và sử dụng

@JvmMultifileClass 

để giảm số lượng các tập tin lớp học tạo ra.

0

Như đã đề cập trong nhận xét theo câu hỏi của tôi, phần tài liệu Kotlin này giải thích khá tốt. https://kotlinlang.org/docs/reference/extensions.html#scope-of-extensions

+1

Có nhưng bạn gọi tập tin KT chứa các phương pháp mở rộng là gì? – mfulton26

+0

Bạn gọi một tệp C có chức năng gì? Rõ ràng điều này phụ thuộc vào các chức năng chứa trong tập tin đó. Tương tự áp dụng cho Kotlin. (Hoàn toàn không có quy tắc nào nói rằng tất cả các chức năng mở rộng được định nghĩa cho một lớp phải, hoặc nên, được chứa trong một tệp đơn.) – yole

+0

Tôi đã chỉnh sửa câu hỏi của mình để làm rõ những gì tôi đã yêu cầu. – pjozsef

Các vấn đề liên quan