פותח את הפוסט הזה לשאלות שעולות לי עכשיו / יעלו בהמשך.
דבר ראשון הפעולה eat:
הצלחתי להבין שהפעולה תקבל רשימת מנות ושהוא יוכל מהן קודם כל בתנאי שדרדשף הכין אותן ובתנאי שנשאר מהמנה.
אני מניח שלפירושי להחליט אם למחוק את המנה כשהיא נגמרת או לתת לדרדשף את האופציה refill ושהוא יוכל להכין עוד חתיכות אם היא הסתיימה (והאם לפשט את האופציה ופשוט לתת לו להוסיף על המצב הקיים? זאת אומרת גם אם נשארו 0 מנות וגם אם לא אכלו בכלל מהמנה הוא יוכל להוסיף מנות)
והבנתי שדרדס יקבל רשימת מנות ויאכל את כולן, אך האם מדובר בכל המנה או רק חתיכה ממנה?
בנוגע להוצאה להורג של גרגמל, האם הוא מקבל פעולות כמו כל שאר הדרדסים בכפר או שבתור אסיר הוא מאבד את הזכויות שלו לישון ולאכול?
וחזרה לדרדשף, אני מניח שהדרך היעילה תהיה ליצור לו משתנה שנקרא מנות שיהיה רשימה של כל המנות שהכין אך בהתחשב בכך שיכול להיות יותר משף אחד בכפר ושזה לא חדר אוכל שיתופי (תקנו אותי אם אני טועה), האם להוסיף לפעולה eat מופע של דרדשף שהוא יאכל מהמנות שלו?
aviadamar
דרדס אוכל חתיכה מכל מנה
לגיטימי לעשות פונקציית ריפיל
גרגמל - לא נדרש אבל אם בא לך תעשה לו.
בנוגע להכנת המנות … זה לגמרי תלוי איך אתה מרכיב את הקוד. מאמין שיש כמה דרכים תבחר מה הכי עובד לך
3 לייקים
DrorBiton
תודה רבה, עזרת לי המון, אני לקראת סיום התרגיל ונשאר לי רק לסיים את דרדסבא ואני נתקע עם הפעולה give order
קראתי את הפוסט הזה מס’ פעמים: ואם תהיו טובים אולי תצליחו לראות את הדרדסים
הבנתי שהכוונה להעביר פונקציה כפרמטר, אך לא הבנתי איך אני עושה את זה כמו בדוגמא שים נתן.
כשאני מנסה להעביר את השורה:
def give_order(self, smurf.function):
אני מקבל invalid syntax.
כשניסיתי להעביר את המופע של הדרדס ואת הפונקציה כשני משתנים נפרדים קיבלתי שהפונקצייה לא מוגדרת כי היא הרי חלק בתוך המחלקה של הדרדס.
אז איך אני מעביר פונקציה כפרמטר כשמדובר במחלקות?
aviadamar
מה שרשמת הוא לא פרמטר הוא ממש מופע של דרדס ופונקציה שמקושרת אליו.
לפונקציה נכנס רק פרמטר (:
Liran_C
ארגיומנטים לפונקציה לא יכולים להיכתב ככה…
אני במבין שאתה מנסה לפנות לפונקציה במחלקה smurf, אבל היא אפשר להעביר פונקציה בהצהרה שלה
רק בקריאה שלה.
DrorBiton
אני מנסה להבין את הנחיית התרגיל, מתבקש מאיתנו שהפעולה give order תקבל פעולה של דרדס רגיל ותפעיל אותו עליו.
אם כך הפעולה give order אמורה לקבל מופע + פעולה כמו בדוגמא של ים:
papa_smurf.give_order(basic_smurf.sleep)
וממה שאני מבין ממך אם הפונקציה אמורה לקבל רק פרמטר, איפה בדיוק נכנס המופע של הדרדס שעליו תופעל הפונקציה?
aviadamar
המופע נכנס לפונקציה של דרדסאבא כמו שרשמת … השאלה מה עדית בחתימת הפונקציה אצל דרדסבא
DrorBiton
זה בדיוק מה שאני לא מצליח להבין, איך לגרום לכך שהפונקציה תדע לקבל את המופע random_smuf.function
aviadamar
כמו כל פרמטר רגיל. אין משו מיוחד שצריך לעשות
eldad.el1234
שאלה נוספת בנושא:
האם אנחנו יכולים להעביר למתודה papa_smurf.give_order מופע של מתודה (כמו בדוגמא של ים: basic_smurf.sleep) שגם היא בעצמה מקבלת ארגונטים (לדוגמא: אם אנחנו רוצים להעביר זמן שינה למתודה sleepת האם אפשר לעשות זאת ע"י
papa_smurf.give_order(basic_smurf.sleep(2)) d?
DrorBiton
כרגע אמרו לנו שלא ושהפעולה give order צריכה לקבל פעולה בלי אגרומנטים (כמו sleep), מניח שבהמשך יהיה שובו של דרדסבא 2.0 וכן נצטרך לעשות את זה.
בכל אופן @aviadamar מצאתי את הדרך לפתרון למרות שלקח לי קצת יותר זמן להבין אותה משחשבתי, תודה רבה על העזרה!