Nó có nghĩa là trở Unit
:
val res: Unit = new foo match {
case bar: Bar => println("First case statement")
case _ =>
}
Nếu bạn thay đổi tuyên bố của bạn để trở lại một cái gì đó thay vì println
(mà trả Unit
):
val res: Any = new foo match {
case bar: Bar => "it's a bar"
case _ =>
}
Bây giờ trình biên dịch đã suy Any
bởi vì đó là lần đầu tiên loại siêu phổ biến giữa String
và Unit
.
Lưu ý rằng trường hợp trùng khớp của bạn là sai bởi vì khớp trên bar
một mình có nghĩa là bắt tất cả các biến, bạn có thể muốn bar: Bar
.
Nguồn
2014-09-15 08:34:08
Đồng ý với câu trả lời và chỉnh sửa của bạn. –