Mã nàyXây dựng một biểu thức lambda sử dụng một dấu gạch dưới
(1 to 30).foreach { x =>
println(x)
println
}
làm những gì tôi mong đợi: nó in mỗi 1
-30
, xen kẽ với khoảng trống. Tôi khá rõ ràng về những gì đang xảy ra ở đây, tôi nghĩ: Tôi đang chuyển một hàm ẩn danh mà lần đầu tiên in đối số của nó, và sau đó in một dòng trống.
Những gì tôi không hiểu là tại sao điều này không làm như vậy:
(1 to 30).foreach {
println _
println
}
Có vẻ tương đương với tôi. Dấu gạch dưới nên đại diện cho đối số đầu tiên và duy nhất cho hàm; và hàm in đối số của nó và sau đó in một dòng trống. Nhưng khi tôi chạy phiên bản thứ hai này, tôi không nhận được những dòng trống.
Điều gì gây ra sự khác biệt này?