2010-08-29 36 views

Trả lời

22

Các công cụ cơ bản để đạt được đa hình tĩnh-checkable trong Scala là

  • subtyping (bog tiêu chuẩn OO polymorphism)
  • Loại tham số hóa (cho phép sai đa hình và hạn chế)
  • tự gõ (cho phép hạn chế và chuyên môn hóa đa hình OO)
  • Chuyển đổi ngầm định (cho phép xây dựng đa hình sau thực tế)
  • Kiểu kết cấu (cho phép nhiều -cấu xạ dựa trên tính năng, chứ không phải là loại)
  • giới hạn loại chung (cho phép hạn chế cực kỳ chính xác trên đa hình cho phép)
  • mẫu phù hợp (cho phép đa hình dựa trên cấu trúc dữ liệu, tương tự như các kiểu dữ liệu trừu tượng) các loại-kinded cao
  • (cho phép đa hình trên các công trình đa hình)

Gọi tất cả các 'lựa chọn thay thế' này có lẽ là từ sai, vì chúng được tích hợp tốt. Nó không phải là không phổ biến đối với một số thuật toán đa hình được thể hiện bằng cách sử dụng một số các công cụ này kết hợp.

Nó cũng đáng chú ý là nơi hiểu thấu đáo trong đa hình Scala. Đối với sự hiểu biết không có vẻ đặc biệt đa hình. Bên dưới bề mặt, sự hiểu biết chỉ là đường cú pháp cho các cuộc gọi đến lọc/bản đồ/sơ đồ phẳng và việc triển khai các phương thức đó có xu hướng có tính đa hình cao. Vì vậy, những gì nhìn là tương đối đơn giản cho các vòng lặp có thể dẫn đến một số hiệu ứng đa hình thực sự ấn tượng.

+3

Có lẽ chính xác hơn khi mô tả kiểu nhập cấu trúc là "dựa trên các tính năng của giá trị" hơn "hành vi [của giá trị]", vì hành vi là một thuộc tính mờ từ góc nhìn của hệ thống kiểu. –

+2

Tôi bỏ lỡ "hỗ trợ cho các loại cao cấp" trong danh sách của bạn, đó là một trong những tính năng mạnh mẽ nhất của Scala. Tôi nghĩ rằng tài liệu tham khảo tốt nhất vẫn là giấy của Adrian Moors: http://people.cs.kuleuven.be/~adriaan.moors/files/higher.pdf – Landei

+1

Nhận xét tuyệt vời. Chỉnh sửa. –

Các vấn đề liên quan