Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีใช้วิธี Ruby Grep (พร้อมตัวอย่าง)

มาพูดถึง grep . กัน วิธีการ

วิธีนี้ช่วยอะไรคุณได้บ้าง

คุณสามารถใช้ Grep เพื่อกรองวัตถุที่นับได้ เช่น Arrays &Ranges

“แต่การเลือกทำอย่างนั้นแล้ว!”

ใช่ แต่ grep ทำงานในแบบที่ต่างออกไป &ให้ผลลัพธ์ที่แตกต่างกัน

มาดูตัวอย่างกัน

ตัวอย่างวิธีการ Ruby Grep

รับอาร์เรย์นี้:

objects = ["a", "b", "c", 1, 2, 3, nil]

คุณสามารถใช้ grep เพื่อรับเฉพาะสตริงได้ :

objects.grep(String)
# ["a", "b", "c"]

เฉพาะจำนวนเต็ม:

objects.grep(Integer)
# [1, 2, 3]

หรือทุกอย่างที่ไม่เป็นศูนย์ :

objects.grep_v(NilClass)
# ["a", "b", "c", 1, 2, 3]

หากคุณมีอาร์เรย์ของคำ:

fruit = ["apple", "orange", "banana"]

คุณสามารถค้นหาคำทั้งหมดที่ขึ้นต้นด้วย “a”:

fruit.grep(/^a/)
# ["apple"]

หรือลงท้ายด้วย “e” :

fruit.grep(/e$/)
# ["apple", "orange"]

และถ้าคุณมีรายการตัวเลข:

numbers = [9, 10, 11, 20]

คุณสามารถรับรายการตัวเลขทั้งหมดภายในช่วง :

numbers.grep(5..10)
# [9, 10]

คุณสามารถรวมวิธีการแผนที่และเลือกเป็นหนึ่งเดียวเมื่อคุณใช้บล็อก:

numbers.grep(5..10) { |n| n * 2 }
# [18, 20]

ถ้าอยากได้แฟนซี…

times_two = ->(x) { x * 2 }

numbers.grep(5..10, &times_two)
# [18, 20]

เจ๋งมากใช่มั้ย

Grep vs Select:การทำความเข้าใจความแตกต่าง

grep ทำงานอย่างไร

เคล็ดลับอยู่ที่ === วิธี (สามเท่า) ใน Ruby

Grep เรียกวิธีนี้ในอาร์กิวเมนต์ใดก็ตามที่คุณส่งผ่าน

และปรากฎว่าคลาส นิพจน์ทั่วไป &ช่วงทั้งหมดใช้ === .

พวกเขาใช้วิธีนี้ในลักษณะที่เหมาะสมกับชั้นเรียน

ตัวอย่างเช่น :

  • คลาส (เช่น Integer หรือ Array ) เปรียบเทียบกับคลาสอ็อบเจ็กต์ที่กำหนด
  • พิสัยจะตรวจสอบว่าตัวเลขนั้นอยู่ในช่วงนั้นหรือไม่
  • นิพจน์ทั่วไปตรวจสอบว่ามีการจับคู่หรือไม่

ดังนั้นเมื่อคุณพูด :

objects.grep(Integer)

สิ่งที่คุณพูดจริงๆ คือ :

objects.select { |obj| Integer === obj }

ฉันสับสนเกี่ยวกับ grep มาเป็นเวลานาน…

กว่าฉันจะเข้าใจสิ่งนี้

select วิธีการกรองรายการตามผลของการบล็อก

หากบล็อกประเมินว่าเป็นจริง องค์ประกอบนั้นจะถูกเลือก

แต่ grep เพียงเปรียบเทียบสองสิ่งโดยใช้ === .

คุณสามารถพูดได้ว่า grep เป็นเวอร์ชันเฉพาะของ select !

แผนที่ความคิด Ruby Grep

วิธีใช้วิธี Ruby Grep (พร้อมตัวอย่าง)

ชมวิดีโอการสอน

สรุป

คุณได้เรียนรู้เกี่ยวกับวิธีการ grep ใน Ruby! เป็นวิธีที่มีประโยชน์มากเมื่อคุณเข้าใจวิธีการทำงาน

อย่าลืมฝึกฝนเพื่อให้สิ่งนี้จมลงไป

การฝึกฝนคือกุญแจสู่ความเชี่ยวชาญ!