scala> class A
defined class A
scala> class B
defined class B
scala> val a: A = new A
a: A = [email protected]
scala> a match {
| case _: B => println("unlikely")
| case _ => println("no match")
| }
no match
Trong ví dụ trên, trình biên dịch không cho tôi biết một trong các trường hợp không bao giờ có thể khớp? Một ví dụ phức tạp hơn một chút gần đây đã bắt được tôi, dẫn đến những gì cảm thấy giống như một lỗi không cần thiết mà lẽ ra đã bị bắt bởi trình biên dịch.Kiểm tra loại đối sánh tốt hơn trong Scala
Edit:
Chỉ cần được rõ ràng hơn về câu hỏi này. Điều này có thể xảy ra ở Scala không vì lý do nào đó mà tôi không thể nhìn thấy? (Tôi có thể hiểu nếu các loại đã được sử dụng generics và loại tẩy xoá đã gây ra vấn đề nhưng điều này có vẻ khá thẳng về phía trước.) Và nếu điều này là không thể là có lý do chính đáng này không phải là trong Scala? Nếu không thì nó sẽ được thêm vào khi nào? ;)
Tuyệt vời! Tôi đi câu trả lời của tôi từ một người đã dạy tôi scala và công khai nó! Thx stackoverflow! – Kami