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

เชี่ยวชาญ Ruby grep Method: คู่มือปฏิบัติพร้อมตัวอย่างโค้ด

มาแชทเกี่ยวกับเมธอด grep

เมธอดนี้ทำอะไรให้คุณได้บ้าง?

คุณสามารถใช้ grep กรอง enumerable objects เช่น Arrays และ Ranges

"แต select ทำได้แล้ว!"

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

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

ตัวอย่าง Ruby Grep Method

กำหนดอาร์เรย์นี้:

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

คุณสามารถใช้ grep ดึงเฉพาะ strings:

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

เฉพาะ Integers:

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

หรือทุกอย่างที่ไม่ใช่ nil:

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]

คุณรวม map และ select เป็นหนึ่งเดียวได้เมื่อใช้ block:

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

หากอยาก fancy…

times_two = ->(x) { x * 2 }
numbers.grep(5..10, &times_two) # [18, 20]

คุ้มค่ามากใช่ไหม?

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

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

คีย์อยู่ที่เมธอด === (triple equals) ใน Ruby

Grep เรียกเมธอดนี้บนอาร์กิวเมนต์ที่คุณส่งเข้าไป

และเกิดที่ classes, regular expressions และ ranges ทั้งหมด implement ===

พวกมัน implement เมธอดนี้ในแบบที่สมเหตุสมผลสำหรับคลาส

ตัวอย่าง:

  • Classes (เช่น Integer หรือ Array) เปรียบเทียบกับ class ของออบเจกต์ที่ให้
  • Ranges ตรวจสอบว่าตัวเลขอยู่ในช่วงหรือไม่
  • Regular expressions ตรวจสอบว่ามี match หรือไม่

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

objects.grep(Integer)

คุณพูดจริงๆ แล้วว่า:

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

นานมากผงงสับสนกับ grep…

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

เมธอด select กรองรายการตามผลลัพธ์ของ block

หาก block evaluate เป็น true element นั้นจะถูกเลือก

แต grep แค่เปรียบเทียบสองสิ่งด้วย ===

คุณอาจพูดว่า grep เป็น version เฉพาะเจาะจงกว่าของ select!

Ruby Grep Mindmap

เชี่ยวชาญ Ruby grep Method: คู่มือปฏิบัติพร้อมตัวอย่างโค้ด

ดูวิดีโอสอน

สรุป

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

อย่าลืมฝึกฝนเพื่อให้มันซึมซับ

Practice is the key to mastery!