Tôi có một mảng Ruby chứa một số giá trị chuỗi. Tôi cần phải:
- Tìm tất cả các phần tử phù hợp với một số vị ngữ
- Chạy các phần tử phù hợp thông qua một phép chuyển đổi
- Trả về kết quả dưới dạng một mảng
Ngay bây giờ giải pháp của tôi trông như thế này:
def example
matchingLines = @lines.select{ |line| ... }
results = matchingLines.map{ |line| ... }
return results.uniq.sort
end
Có phương thức Array hoặc Enumerable nào kết hợp lựa chọn và ánh xạ vào một câu lệnh logic duy nhất không?
Enumerable#grep
phương pháp thực hiện chính xác những gì được yêu cầu và đã được trong Ruby trong hơn mười năm. Nó có một đối số vị từ và một khối chuyển đổi. @hirolau đưa ra câu trả lời đúng duy nhất cho câu hỏi này.
filter_map
cho mục đích chính xác này. Thêm thông tin ở đây .