Tôi đang viết mã chung để xử lý danh sách các cá thể kiểu chữ, thu thập các giá trị trong mỗi trường, kết hợp và sau đó chuyển nó vào thư viện.Làm thế nào để liệt kê shapeless Ghi lại và truy cập các phím trường trong thời gian chạy?
Sử dụng chức năng hình thù LabelledGeneric
và đa hình, nó trông như thế này:
object toNamedSingletonListOfValues extends Poly1 {
implicit def caseField[K,T] =
at[FieldType[K, T]](field => { field.key -> List[T](field) })
}
val generic = LabelledGeneric[MyClass]
val records = listOfMyClassInstances.map(generic.to)
val values = records.map(_.map(toNamedSingletonListOfValues)) // Then combining and passing
Tuy nhiên, tôi cần một cách để nhận field.key
vì thư viện cần các tên tham số.
Bạn có nhớ đề xuất giải pháp không?
Cảm ơn bạn! Tôi có một số thứ để viết lại ngay bây giờ, nhưng nó thực sự cho phép tiến bộ cho tôi. BTW, tôi đã cố gắng sử dụng Aux'es, tuy nhiên, tôi không thể tìm ra Aux từ những gì đối tượng tôi cần phải sử dụng. Không có tài liệu nào cho Aux'es và hầu như không thể suy ra kiến thức này từ mã nguồn không có định dạng, vì các định nghĩa Aux nằm rải rác trên tất cả các tệp mã nguồn không hoạt động. –
Các kiểu 'Aux' đều được ghép nối với một lớp kiểu cụ thể và được thiết kế để quảng bá một thành viên kiểu vào một tham số kiểu. Bạn có thể viết nó với 'wk: Witness {type T = K}', nhưng phiên bản 'Aux' thì đẹp hơn. –