Nếu tôi sử dụng một un kín trait
hoặc abstract class
trong Scala và sau đó sử dụng mô hình phù hợp, tôi tự hỏi, không trình biên dịch không biết tại thời gian biên dịch cho patternmatch đặc biệt này những gì thực hiện khác nhau của đặc điểm này / lớp có sẵn? Vì vậy, nếu có, nó có thể không đưa ra cảnh báo khớp mẫu hay không mặc dù trait
/ abstract class
không được niêm phong vì anh ta biết loại nào có thể được sử dụng, bằng cách kiểm tra tất cả các phụ thuộc / nhập khẩu có thể?
Ví dụ: nếu tôi có một Option[A]
và tôi chỉ khớp mẫu cho Some[A]
nhưng không cho None
, trình biên dịch sẽ khiếu nại, vì đã Option
được niêm phong.
Nếu trình biên dịch không thể biết / giải quyết điều đó, thì tại sao anh ta không thể? Và nếu trình biên dịch (về mặt lý thuyết) có thể làm điều đó, lý do nào khiến nó không được sử dụng trong Scala? Có ngôn ngữ nào khác hỗ trợ loại hành vi đó không?
Foo
với lớp con A
, B
và C
, và tất cả các trận đấu mẫu của bạn phù hợp với chỉ những ba. Không có gì ngăn tôi thêm một lớp con mới D
sẽ làm nổ tung các mẫu phù hợp của bạn.
java.lang.ClassLoader
.