Có bất kỳ lý trí nào cho Option
không phải là Traversable
không?Tại sao Tùy chọn không thể chuyển giao?
Trong Scala 2.9, Seq(Set(1,3,2),Seq(4),Option(5)).flatten
không biên dịch và chỉ đơn giản là có nó để thực hiện các đường nối đặc điểm Traversable
hợp lý với tôi. Nếu không phải vậy, chắc chắn tôi không thấy điều đó. Nó là gì?
PS: Trong khi cố gắng tìm hiểu, tôi đạt được những điều khủng khiếp mà biên dịch, như:
scala> Seq(Set(1,3,2),Seq(4),Map("one"->1, 2->"two")).flatten
res1: Seq[Any] = List(1, 3, 2, 4, (one,1), (2,two))
PS2: Tôi biết tôi có thể viết: Seq(Set(1,3,2),Seq(4),Option(5).toSeq).flatten
hoặc khác điều xấu xí.
PS3: Có vỉa được làm việc trong tháng vừa qua để làm Option
nhìn giống như Traversable
mà không thực hiện nó: commit, another commit
Đối với các câu hỏi thiết kế về ngôn ngữ (hoặc trong trường hợp này) như thế này, tốt nhất nên hỏi trực tiếp nhà thiết kế ngôn ngữ (hoặc thư viện). Họ khá nhạy cảm trên danh sách gửi thư nhưng thỉnh thoảng lại ghé thăm StackOverflow. –
@ JörgWMittag Thật tuyệt khi có câu trả lời được biên soạn trên SO, mặc dù .. –