Một thực tế đáng buồn của Scala là nếu bạn khởi tạo Danh sách [Int], bạn có thể xác minh rằng cá thể của bạn là Danh sách và bạn có thể xác minh rằng bất kỳ yếu tố riêng lẻ nào của nó là Int, nhưng không phải là Danh sách [ Int], như có thể dễ dàng xác minh:
scala> List(1,2,3) match {
| case l : List[String] => println("A list of strings?!")
| case _ => println("Ok")
| }
warning: there were unchecked warnings; re-run with -unchecked for details
A list of strings?!
Tùy chọn -unchecked đặt sự đổ lỗi thẳng vào loại tẩy:
scala> List(1,2,3) match {
| case l : List[String] => println("A list of strings?!")
| case _ => println("Ok")
| }
<console>:6: warning: non variable type-argument String in type pattern is unchecked since it is eliminated by erasure
case l : List[String] => println("A list of strings?!")
^
A list of strings?!
Tại sao vậy, và làm thế nào để tôi có được xung quanh nó?
scala 2.10.2
, tôi thấy cảnh báo này thay vào đó: <console>:9: warning: fruitless type test: a value of type List[Int] cannot also be a List[String] (but still might match its erasure) case list: List[String] => println("a list of strings?") ^
Tôi thấy câu hỏi và câu trả lời của bạn rất hữu ích, nhưng tôi không chắc cảnh báo cập nhật này có hữu ích cho độc giả hay không.