בתרגיל מספרים פראיים, בכדי למצוא את המספר הראשוני הבא (החל מ-2), ניסיתי ליצור ג’נרייטור. התוצאה היא שאני מקבל לולאה אינסופית.
כשהשתמשתי בפונקציה רגילה - ללא שימוש ב-yield - זה עובד.
מה אני עושה לא נכון?
האם אני אמור לקרוא שוב לפונקציית הג’נרייטור שוב ושוב, או רק לבקש את ה-next שלה?
כי אם כן, מה מקדם אותה? ה-yield?
help
orpazf
אתה אמור לקרוא ל-next על הגנרטור הקיים שוב ושוב. אם אתה יוצר כל פעם גנרטור חדש תקבל בכל פעם את האיבר הראשון, כי בכל פעם תקרא לגנרטור חדש שיחזיר לך במקרה הזה 2 ואז תדרוס אותו ותתחיל מההתחלה
לייק 1
ha.amear
אוקי, זה מסביר את זה. תודה רבה לך.
אז נניח שאני שולח לג’ניירטור כל פעם את המספר הבא n+1, האם יש בכלל יתרון לג’נרייטור? או שזה אותו הדבר?
בהתחלה חשבתי ליצור פונקציה שתכין את כל המספרים הראשוניים עד למספר המבוקש, ואז ה-yield יקדם את זה עד למציאת כל המכפלות - אבל זה נראה לי בזבוז משאבים - אני לא צריך את כל המספרים הראשוניים.