Từ các tài liệu:
- (Đối tượng?) Phát hiện (ifnone = nil) {| obj | ...}
- (Đối tượng?) Tìm (ifnone = nil) {| obj | ...}
- (Đối tượng) phát hiện (ifnone = nil)
- (Đối tượng) tìm (ifnone = nil)
Vượt qua từng mục trong enum để chặn. Trả về khối đầu tiên mà khối không sai. Nếu không có đối tượng khớp, gọi ifnone và trả về kết quả của nó khi được chỉ định hoặc trả về nil nếu không.
Nếu không có khối nào được đưa ra, thay vào đó, một điều tra viên được trả về.
(1..10).detect {|i| i % 5 == 0 and i % 7 == 0 } #=> nil
(1..100).detect {|i| i % 5 == 0 and i % 7 == 0 } #=> 35
Điều này làm việc cho tôi:
clients.detect{|client| client.last['client_id'] == '2180' } #=> ["orange", {"client_id"=>"2180"}]
clients.detect{|client| client.last['client_id'] == '999999' } #=> nil
Xem:
http://rubydoc.info/stdlib/core/1.9.2/Enumerable#find-instance_method
find
vàselect
làfind
trả về kết quả khớp đầu tiên vàselect
(được đặt bí danh làfindAll
) trả về tất cả các kết quả khớp.