Tôi là loại mới đối với Scala và tôi có một câu hỏi về hệ thống kiểu.Trình kiểm tra loại Scala biết cách ngăn chặn gọi flatten trên Danh sách đã phẳng
Phương pháp flatten hoạt động trên các bộ sưu tập lồng nhau, vì vậy nếu tôi có Danh sách các danh sách, nó sẽ làm phẳng nó vào Danh sách. Nhưng nó không có ý nghĩa để gọi flatten trên một bộ sưu tập đã được bằng phẳng. Và chắc chắn rằng trình kiểm tra loại Scala sẽ gắn cờ đó là một lỗi.
List(List(1,2,3),List(4,5,6)).flatten // produces List(1,2,3,4,5,6)
List(1,2,3,4).flatten // type error
Tôi hiểu rằng điều này bằng cách nào đó dựa vào tham số ẩn để làm phẳng. Nhưng tôi không biết giá trị tiềm ẩn đến từ đâu và nó được sử dụng như thế nào để khẳng định kiểu của đối tượng flatten được gọi. Ngoài ra, tại sao không tham số ngầm hiển thị trong scaladocs cho List.flatten?
Chuyển đổi không cần phải ngầm định, nó cũng hoạt động: Danh sách (1-> 2,3-> 4) .flatten (p => Danh sách (p._1, p._2)) –
Chắc chắn, mọi thông số ngầm định cũng có thể được chuyển một cách rõ ràng. –