จากเอกสาร:
- (Object?) ตรวจจับ (ifnone = nil) {| obj | ... }
- (Object?) find (ifnone = nil) {| obj | ... }
- (วัตถุ) ตรวจจับ (ifnone = nil)
- (วัตถุ) ค้นหา (ifnone = nil)
ส่งผ่านแต่ละรายการเป็น enum เพื่อบล็อก ส่งคืนบล็อกแรกที่ไม่ใช่เท็จ หากไม่มีวัตถุที่ตรงกันให้เรียก ifnone และส่งคืนผลลัพธ์เมื่อมีการระบุหรือคืนค่าเป็นศูนย์
หากไม่มีการกำหนดบล็อกตัวแจงนับจะถูกส่งคืนแทน
(1..10).detect {|i| i % 5 == 0 and i % 7 == 0 } #=> nil
(1..100).detect {|i| i % 5 == 0 and i % 7 == 0 } #=> 35
สิ่งนี้ใช้ได้กับฉัน:
clients.detect{|client| client.last['client_id'] == '2180' } #=> ["orange", {"client_id"=>"2180"}]
clients.detect{|client| client.last['client_id'] == '999999' } #=> nil
ดู:
http://rubydoc.info/stdlib/core/1.9.2/Enumerable#find-instance_method
find
และselect
ที่find
จะส่งกลับนัดแรกและselect
(ซึ่งเป็นนามแฝงโดยfindAll
) ส่งคืนการแข่งขันทั้งหมด