Thực tế, từ khóa type
trong Scala có thể làm được nhiều hơn là chỉ đánh răng một loại phức tạp thành tên ngắn hơn. Nó giới thiệu thành viên loại.
Như bạn đã biết, một lớp học có thể có các thành viên của trường và các thành viên phương pháp. Vâng, Scala cũng cho phép một lớp học có các thành viên loại.
Trong trường hợp cụ thể, type
thực sự là giới thiệu bí danh cho phép bạn viết mã súc tích hơn. Hệ thống kiểu chỉ thay thế bí danh với kiểu thực khi kiểm tra kiểu được thực hiện.
Nhưng bạn cũng có thể có một cái gì đó như thế này
trait Base {
type T
def method: T
}
class Implementation extends Base {
type T = Int
def method: T = 42
}
Giống như bất kỳ thành viên khác của một lớp, các thành viên loại cũng có thể là trừu tượng (bạn chỉ cần không chỉ định những giá trị của họ thực sự là) và có thể được ghi đè trong việc triển khai.
Loại thành viên có thể được xem dưới dạng kép của generics vì phần lớn những thứ bạn có thể thực hiện với generics có thể được dịch sang thành viên kiểu trừu tượng.
Vì vậy, có, chúng có thể được sử dụng để đánh răng, nhưng không giới hạn chúng chỉ vì điều này, vì chúng là một tính năng mạnh mẽ của hệ thống kiểu Scala.
Xin xem câu trả lời này tuyệt vời để biết thêm chi tiết:
Scala: Abstract types vs generics
Nguồn
2013-10-21 11:26:07
Điều quan trọng cần nhớ là việc sử dụng loại bên trong lớp sẽ tạo thành viên loại thay vì bí danh. Vì vậy, nếu bạn chỉ cần một bí danh loại, hãy xác định nó trong đối tượng đồng hành. –