בתשובה לערן בילינסקי, 15/06/07 21:00
התחלת ולכן תסיים? 447188
הממ, לא זכרתי טוב, ועכשיו בלבלת אותי עוד יותר - אתה בטוח שהאובייקט הוא לא ערך ה-true/false, והבלוק הוא הפרמטר לפונקציה?

אגב, ככה גם רובי עובד - לכל פונקציה אפשר להעביר בלוק/פונקציה אנונימית, וכך גם מממשים איטרטורים. הסינטקס די דומה לזה של smalltalk אבל לדעתי קצת יותר קריא.

הנה דוגמה שאני מחבב לקוד ברובי, במקרה הזה שמדפיסה את 1,000 מספרי פיבונאצ'י הראשונים:

x=y=1
1000.times {x,y=y,x+y; puts x}

והנה דוגמה לאיטרטור שלוקח מערך של ערכי x, מפעיל פונקציה f עליהם ומחזיר מערך y של התוצאות:

y=x.collect {|x_value| f(x_value)}

אין לי ספק שגם בשפות אחרות יש מבנים דומים, אבל אני תוהה בכמה מהשפות שהן לא ב-Cluster של רובי (כדוגמת פייתון וסמולטוק) זה קריא ואלגנטי בצורה דומה.
התחלת ולכן תסיים? 447194
הלכתי לבדוק. אם אני מבין נכון את מה שמצאתי כאן:
אז האובייקט הוא מופע (יחיד) של תת-מחלקה של Boolean - או True או False. כל אחת מהן מממשת את ההודעות ifTrue ו-IfFalse ושילובים של השתיים (אשר מוצהרות כבר ב-Boolean), כשכל הודעה מקבלת כפרמטר בלוק (או שניים). הנה דוגמה לתחביר (מתוך הערך בוויקיפדיה):
result := a > b
ifTrue:[ 'greater' ]
ifFalse:[ 'less' ]
התחלת ולכן תסיים? 447195
טוב, עשית לי חשק, ועוד לא גמרתי ללמוד פייתון. תתבייש לך.
התחלת ולכן תסיים? 447196
נו, ואני אפילו עוד לא התחלתי ללמוד פייתון. בוש והיכלם.

חזרה לעמוד הראשי המאמר המלא

מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים