Tôi có trường hợp sử dụng sau đó xảy ra thường xuyên trong mã của tôi:Làm thế nào để chuyển đổi một danh sách [A] vào một danh sách [B] sử dụng một chuyển đổi ngầm
- Một Collection [A]
- Một ngầm chuyển đổi A đến B
và tôi muốn để có được một bộ sưu tập của B. tôi có thể sử dụng ngầm như sau:
case class Items(underlying:List[B])
import B._
def apply(a:List[A]):Items = {
val listOfB= a.map {implicitly[A=>B]}
Items(listOfB)
}
Cách thanh lịch nhất để làm điều đó trong Scala, có lẽ với sự giúp đỡ của Scalaz làm như vậy?
Chỉnh sửa: mục tiêu của câu hỏi của tôi là tìm cách thức thành ngữ, một cách tiếp cận chung giữa các thư viện/nhà phát triển. Trong ý nghĩa đó, việc phát triển giải pháp pimp-my-library của riêng tôi là điều tôi không thích, bởi vì những người khác viết mã của tôi sẽ không biết sự tồn tại của chuyển đổi này và sẽ không sử dụng nó, và họ sẽ tự viết lại. Tôi ủng hộ bằng cách sử dụng một phương pháp thư viện cho các chức năng phổ biến này và đó là lý do tại sao tôi tự hỏi liệu trong Scalaz nó tồn tại một tính năng như vậy.
Có phải đó là một phần của một số thư viện chuẩn không? Tôi ghét phát minh lại bánh xe – Edmondo1984
@ Edmondo1984: không biết, tôi đã viết nó từ đầu ngay bây giờ, nhưng tôi có thể được tái phát minh bánh xe là tốt. BTW đọc câu trả lời của tôi một lần nữa, tôi đã mở rộng giải pháp, do đó bạn chỉ cần một chuyển đổi ngầm định 'convList' cho bất kỳ loại chuyển đổi nào. –