
אתה לעולם לא צריך לחזור על עצמך בעת כתיבת קוד. במילים אחרות, אל תחזור על עצמך פעמיים. כדי להיות ברור - אל תכתוב משהו שהוסבר כבר.
זה נקרא טאוטולוגיה, וכאשר כותבים קוד זה צריך להימנע כל הזמן. למשל, האם לא היה נחמד במקום לקרוא את הפסקה הארוכה הזו אם הייתי משתמש בשלוש המילים החזקות "לעולם אל תחזור על עצמך"?
ובכן, זה מה שאני אראה לך איך לעשות עם. בחר שיטות .מפה ו. להפחית (או. להזריק).
דוגמא
נניח שאתה בוחן מילון מלא בשמות העובד, תואר תפקידו ומשכורותיו. בואו נדמיין שרציתם לגלות את הסכום הכולל שהחברה הוציאה על משכורות המפתחים. עכשיו, בלי להשתמש בשיטה אחת ברובי, סביר להניח שאתה כותב את הקוד שלך משהו כזה:
people = [ { first_name: "Gary", job_title: "car enthusiast", salary: "14000" }, { first_name: "Claire", job_title: "developer", salary: "15000" }, { first_name: "Clem", job_title: "developer", salary: "12000" } ] person1 = people[0][:job_title] person2 = people[1][:job_title] person3 = people[2][:job_title] total = 0 if person1 == "developer" total += people[0][:salary].to_i end if person2 == "developer" total += people[1][:salary].to_i end if person3 == "developer" total += people[2][:salary].to_i end puts total
וואו - זה הרבה שורות לכתוב כדי למצוא רק שלושה אנשים. תאר לעצמך אם החברה העסיקה מאות אנשים!
עכשיו אם אתה יודע קצת על לולאות, אז השלב הקל הבא יהיה לכתוב כל שיטה כדי להרכיב את כל המשכורות. זה יכול להימשך רק חמש או שש שורות אבל בדוק את זה!
puts people.selectx.mapy.reduce(:+)

תבחין שכל שיטה מתחילה ומסתיימת בסוגר מתולתל. ניתן להשתמש בזה במקום בפקודות ה- do והסיום אם מדובר בחסימת שורה אחת.
{} == (do end) #for single-line blocks only
.בחר
נתחיל בשיטת .select. אנו יוצרים משתנה (x) ואנו חוזרים על כל שיטה במערך האנשים. לאחר מכן הוא בודק עם ביטוי בוליאני אם המפתח של (: job_title) שווה למחרוזת "מפתח". אם הבוליאני מחזיר אמת, אז שיטת הבחירה ממקמת את הגיבוב שהחזיר אמת לאובייקט חדש.
.מַפָּה
שיטת המפה משמשת ליצירת מערך חדש שאינו משפיע על המערך שהוא עובר באמצעותו. השתמשתי בשיטה זו כדי ליצור משתנה חדש (y), ואז השתמשתי במשתנה זה כדי לתפוס את ערך המפתח (: משכורת). ואז, סוף סוף הפכתי את הערך הזה ממחרוזת למספר שלם.
.לְהַפחִית
זה כנראה נראה הכי מבלבל אז בואו נרחיב את זה קצת.
.reduce(0) sum + indv #is the same as .reduce(:+)
שיטת הצמצום יוצרת משתנה חדש אשר אתה מגדיר את הערך השווה בסוגריים הראשונים (0). לאחר מכן אתה יוצר שני ערכים חדשים (סכום ו- indv) שאחד מהם הוא הסכום שאליו אתה מוסיף את המשכורות האישיות.
אני מקווה שזה מסביר את זה טוב! אנא יידע אותי אם יש לך שאלות.