Select ו־Reject
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 21 מתוך 56.
המתודה select מחזירה מערך חדש שמכיל רק את האיברים שעבורם הבלוק מחזיר ערך truthy. כך Ruby כותבת "filter".
numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect # [2, 4, 6]reject הוא ההפך: הוא משאיר את כל מה שעבורו הבלוק מחזיר false:
odds = numbers.reject { |n| n.even? }
puts odds.inspect # [1, 3, 5]שניהם מחזירים מערך חדש; המקורי אינו משתנה.
הבלוק הוא פשוט פרדיקט; כל דבר שמחזיר true או false מתאים:
words = ["hi", "hello", "hey", "yo"]
long = words.select { |w| w.length >= 3 }
puts long.inspect # ["hello", "hey"]אתגר
מתחיליםקרא רשימה של מספרים שלמים המופרדים בפסיקים. הדפס שתי שורות:
- המספרים הגדולים מ־
10(השתמש ב־select), מחוברים באמצעות, - המספרים שאינם מתחלקים ב־
3(השתמש ב־reject), מחוברים באמצעות,
עבור הקלט 3,7,12,15,20, הפלט הוא:
12, 15, 20
7, 20נסו בעצמכם
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: שורה 1, מספרים > 10, מחוברים באמצעות ", "
# TODO: שורה 2, מספרים שאינם מתחלקים ב-3, מחוברים באמצעות ", "
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
סקירה של מתודות למחרוזותאינטרפולציה של מחרוזותמעבר על מחרוזותפיצול וחיבורסיכום – שוזר המחרוזות4בלוקים, Procs ו־Lambdas
מהו בלוק?do..end לעומת סוגריים מסולסליםמילת המפתח yieldפרמטרים של בלוקProcs ו־Lambdasסיכום – איטרטור מותאם אישית7Hashes חלק 2
Hash.new עם ערכי ברירת מחדלמעבר על HashesHashes מקונניםמיזוג ושינויסיכום - מונה תדירויות10פרויקט - רשומות תלמידים
סקירת הפרויקטהוספת תלמיד5עוצמת Enumerable
Select ו־Rejectשרשור MapReduce / Injectcount, all?, any?, none?group_by ו־partitionsort_by, min_by, max_byסיכום - צינור נתוניםתרגלו בעצמכם: קומפיילר Ruby אונליין