2014-05-20 15 views
5

IntelliJ mang lại cho tôi một gợi ý về một đoạn mã sau:Chuyển đổi trận đấu tuyên bố chức năng một phần khi foreach được sử dụng

val l = List(0, "1", 2, "3") 

l.foreach{_ match {case xx:Int => println(xx);case _ =>}} 

Các gợi ý là "Chuyển đổi tuyên bố trận đấu với chức năng một phần"

Khi tôi thay đổi foreach đến

l.foreach{case x:Int => println(x)} 

Tôi nhận được ngoại lệ scala.MatchError. Tôi có thể sử dụng collect thay vì foreach, tuy nhiên tạo ra kết quả List không bao giờ được sử dụng.

Có cách nào phổ biến làm thế nào để xử lý này (một cái gì đó như foreach bỏ qua các giá trị không phù hợp), hoặc tôi nên bỏ qua gợi ý?

Trả lời

13

Đặt trường hợp mặc định trở lại:

val l = List(0, "1", 2, "3") 

l.foreach { case xx:Int => println(xx); case _ => } 

IDEA sẽ được hạnh phúc:

enter image description here

Trong thực tế, đó là những gì IDEA sẽ tạo ra nếu bạn khai thác hành động đề xuất (ALT + ENTER khi dấu mũ của bạn trỏ tới văn bản màu vàng)

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