2012-10-24 36 views
9

giải thích của tôi về _._1 là:_ __ 1 và _ ++ _ có nghĩa là gì trong Scala (hai hoạt động riêng biệt)?

_ = tham số wildcard _1 = tham số đầu tiên trong phương pháp danh sách tham số Nhưng khi sử dụng cùng với . gì nó biểu hiện?

Đây là sử dụng nó như thế nào:

.toList.sortWith(_._1 < _._1) 

Đối với tuyên bố này:

_++_ 

Tôi bị mất. Là nó nối hai tham số ký tự đại diện bằng cách nào đó? Đây là sử dụng nó như thế nào:

.reduce(_++_) 

tôi sẽ đặc biệt quan tâm nếu họ đang ở trên có thể được thực hiện chi tiết và loại bỏ bất kỳ implicits, chỉ để tôi có thể hiểu được nó tốt hơn?

Trả lời

10

_._1 gọi phương thức _1 trên thông số ký tự đại diện _, là yếu tố đầu tiên của bộ tuple. Do đó, sortWith(_._1 < _._1) sắp xếp danh sách bộ dữ liệu theo phần tử đầu tiên của chúng.

_++_ gọi phương thức ++ trên tham số ký tự đại diện đầu tiên có thông số thứ hai làm đối số. ++ không nối cho chuỗi. Vì vậy, .reduce(_++_) nối một danh sách các chuỗi lại với nhau. Thông thường, bạn có thể sử dụng flatten cho điều đó.

5

_1 là tên phương thức. Các bộ dữ liệu cụ thể có một phương thức có tên là _1, trả về phần tử đầu tiên của bộ tuple. Vì vậy, _._1 < _._1 có nghĩa là "gọi phương thức _1 trên cả hai đối số và kiểm tra xem đầu tiên có nhỏ hơn giá trị thứ hai hay không".

Và có, _++_ ghép nối cả hai đối số (giả sử đối số đầu tiên có phương thức ++ thực hiện ghép nối).

3
.reduce(_++_) 

là thực sự chỉ:

.reduce{ (acc, n) => acC++ n } 
Các vấn đề liên quan