ארכיון יומי: 21 ספטמבר, 2009

הכוח gsub

במידה ואתם עובדים עם רובי, יש ביכולתכם להרחיב הרבה יכולות של פונקציות ומתודות הרבה מעבר למה שזה נראה במקור.

דוגמה לכך תעשה על ידי על ידי המתודה gsub של המחלקה String . בברירת מחדל מאפשרת לנו המתודה לעבוד עם regex ולקחת חוק בשפה ולהחליף את התוכן שלו במשהו אחר. אבל מה קורה אם אנחנו צריכים מעט יותר פעולות בשביל לקבוע במה הוא יתחלף ? או שנכתוב משהו שיעטוף לנו את המתודה, או שננצל את הכוח של רובי.

1. שימוש "רגיל" ב gsub:

'Hello world'.gsub(/^Hello/, 'GoodBye cruel')

ובכן בשביל זה אפשר "לכופף" את רובי בצורה הבאה:

2. שימוש מתקדם בgsub:

'Hello world'.gsub(/^\w+/) do |match|
match = 'GoodBye cruel' if 'Hello' == match
end

ובכך אפשר בעצם ליצור הרבה מאוד דברים כאשר המחרוזת שנמצאה מתאימה למה שאנחנו ביקשנו בחוק. חשוב לדעת שאי מתן טקסט ל match (או כל שם אחר שתספקו) ימחק את מה שנמצא.