Giả sử bạn muốn có một cái gì đó như variadic templates (khả năng xác định các thông số kiểu n cho một lớp chung) trong Scala. Ví dụ: bạn không muốn xác định Tuple2[+T1, +T2]
và Tuple3[+T1, +T2, +T3]
nhưng Tuple[T*]
.Giả lập các mẫu biến thể trong Scala
Có các tùy chọn nào khác ngoài HLists có hỗ trợ Tuple, Sản phẩm và chức năng không?
Tôi cho rằng bạn có thể cuộn phiên bản HList của riêng bạn, nhưng tại sao? Bạn có thể chỉ ra cách lựa chọn được hình dung của bạn sẽ khác với một HList không? –
Định nghĩa kiểu ở phía người dùng hơi phức tạp đối với khẩu vị của tôi. Một giải pháp lý tưởng sẽ cho phép một Tuple định nghĩa kiểu tự nhiên hơn [T1, T2, T3] giống như TupleX đã làm trong libs Scala. Ngoài ra, nó sẽ hỗ trợ các loại khác như Chức năng và Sản phẩm. –
Nhưng Scala đã cung cấp, và sử dụng HList, một số cú pháp đường để giảm sự phức tạp đó. Ví dụ, xem định nghĩa kiểu này từ liên kết HList: 'val list: Int :: String :: Boolean :: HNil = ...'. –