này không biên dịch và tôi không hiểu tại sao:Tại sao ánh xạ trên một HList of Option [T] không hoạt động?
import shapeless._
import poly._
object option extends (Option ~> List) {
def apply[T](t: Option[T]) = t.toList
}
val simple = Some(1) :: Some("hello") :: Some(true) :: HNil
val opts: List[Int] :: List[String] :: List[Boolean] :: HNil = simple map option
Đây là điều khá ngạc nhiên, bởi vì đây không biên dịch:
import shapeless._
import poly._
object choose extends (Set ~> Option) {
def apply[T](s: Set[T]) = s.headOption
}
val sets = Set(1) :: Set("foo") :: HNil
val opts: Option[Int] :: Option[String] :: HNil = sets map choose
Vui lòng nói lỗi bạn nhận được. Đừng làm cho nhiều độc giả (đến một nhà văn của bạn) đoán, hoặc phải chạy nó. –
@Paul Thx cho đề xuất. Đó là một phần của một thương mại tắt giữa câu hỏi conciseness (trong đó bao la cải thiện cơ hội ai đó thực sự sẽ trả lời câu hỏi, IMHO) và cung cấp càng nhiều thông tin càng tốt. Có lẽ một ngày, SO sẽ có một trình biên dịch tích hợp và chúng tôi sẽ có tốt nhất của cả hai thế giới (chưa kể đến ít lỗi chính tả trong mã). – jedesah
Er, không, không phải trong trường hợp này. Cung cấp thông báo lỗi là một vài dòng phụ và không làm lộn xộn những gì bạn đã đặt. "không biên dịch" chỉ kém nhẹ hơn so với "khét tiếng" –