אמנם בשונה מ @שואף שכותב ישירות באסטריסק ע"י מימוש בPHP (או משהו כזה), ואני עדיין עובד עם הAPI מול ימות המשיח.
אבל נראה לי שזה עדיין דומה.
אני מבין את @שואף שבאמת זה מאוד קל לכתוב זאת בצורה כזו, ואתה שולט בקלות על הזרימה לאן להפנות את המאזין במידה והקיש כך או לא הקיש, ובכל מקרה כשמדובר ב 3 נתונים זה באמת לא מסובך.
בעיני עיקר הסיפור שלו הוא בגלל שהוא רוצה לאפשר בכל שלב לחזור לשלב הקודם, ובשביל זה הוא משתמש בgoto, ולולי כן הוא היה יכול לעשות בקלות בתוך הפונקציה עצמה לולאה שלא משחררת את המאזין עד שהוא משחרר את הנתון המבוקש.
אני אישית גם מתמודד עם זה, ואכן כמעט שאני לא מאפשר חזרה שלב בודד אחורה, והמקסימום הוא שאני מגדיר לפי הצורך בכל נתון בנפרד שאם הקיש 0 אני מחזיר אותו לתחילת השלוחה (זה לא נכון לעשות את זה אוטומטי לכל הערכים בגלל שבמקרים ואני דורש מהלקוח להזין נתון שיכול להיות אפס אז כמובן שאני לא יוכל להגדיר שיוחזר לשלב קודם, וא"כ עלי לעשות זאת בכוכבית, ולפעמים הכוכבית גם בשימוש וא"כ היה עלי להגדיר כל פעם משהו אחר, ולכן התרגלתי פשוט לכתוב ידני כעין מה ש @שואף שם בקוד שלו, וכל פעם לפי הצורך אני מעביר אותו לתחילת השלוחה או מה על ידי מעקב של מה הוא הקיש).
אלא מאי? @dovid הוא כמלאך המכה ואומר גדל, ולא ניחא ליה בזה, הוא רוצה להביא אותנו שנוציא את המקסימום, ולכן הוא לא מרפה.
אני חושב כעת, א. אני יכול להוסיף לפונקציית הread ערך כמו back שמקבל פרמטר שבמידה והוא קיים הוא יעביר אותו חזרה, וכל פעם אוכל להגדיר בו האם 0 או * או כל מקש אחר יבצע את הפעולה של חזרה לתחילת השלוחה.
אז כבר פתרתי חלק אחד.
אך מה שקורה כעת שהפונקציה של read שעד היום קיבל עד 7 פרמטרים יקבל 8, ולא תמיד חייבים הכל, זה יעריך את הקוד של הקריאה לפונקציה, אז אולי אצטרך לשנות שהפונקציה מקבלת אובייקט options ובו אכניס בשם את הפרמטרים הנדרשים, אך זה כבר גם אריכות שמסרבלת.
{אלא שבאמת להכניס כל פעם תנאי באם הקיש 0/*/אחר בשורה נפרדת מתחת היא הרי גם מאריכה את הקוד.. אם לא לרוחב השורה אז לאורך המסך}.
ולגבי חזרה שלב אחד אחורה בכל פעם, מה ששואף מרוויח עם הטוגו, במימוש שלי עם הAPI של ימות המשיח זה אותו דבר, והיות ואני לא חשבתי והתחברתי לגוטו אז פשוט כמעט ואני לא משתמש באופציה של חזרה שלב אחורה, ובמקרים שאני מוכרח את זה הייתי עושה פיתרון שמתאים לשלב אחד בודד אחורה, לא תהליך שלם בצעדים אחורה.
זה באמת מורכב לעשות פיתרון לזה.
אבל אולי בזכות @dovid אנסה שוב לחשוב על משהו ובעזה"י להגיע לתוצאה.