WAT I have learned about …

בשבוע האחרון יצא לי לעשות הרבה דברים שונים.

למשל לכתוב קצת קוד פיתון, ולגלות כי Tuple זו הגדרה מוזרה במקצת:

a = (1)  # an Integer
a = (1,) # a Tuple
a = 1    # an integer
a = 1,   # a Tuple

על זה נאמר WAT ?

אבל זה לא הכל.
המרתי תוכנה שלי מרובי 1.8.7, שרצה כבר מספר שנים ב production לגרסה 1.9.3.
החדשות הטובות הן כי כמעט כל הקוד שלי עובד בלי שינוי. החדשות הרעות הן, שרק דבר אחד לא באמת עבד בתחביר:

case a
 when 1 : something # 1.9.3 raises syntax error
 when 1
          something # Both 1.8.7 and 1.9.3 accept it
end

ואם זה לא מספיק בעייתי, גיליתי על מספר תחבירי פסקל מונחה עצמים שהייתי בטוח שאני יודע ומכיר, ומסתבר כי אני לא משתמש בהם נכון, ועבדתי סתם קשה איתם (ועוד יש אנשים שלא יודעים בכלל, ויש להם רעיונות כמה שהם כן יודעים לגבי השפה).

הנה 2 הדברים האלו:

...
except
on E:EDevidedByZero do
  ...
on E:Exception do
 ..
end;

זו הדרך הנכונה לעבוד. פעם זו לא היתה הדרך הנכונה, כי לא היה ניתן להגדיר את e יותר מפעם אחת, וזה נשאר לי מאז, אז הייתי בודק בתוך החלק השני של E:Exception את סוג המחלקה של e. אבל זה לא נכון. זה כבר המון שנים מסתבר שלא נכון !

עוד משהו שמסתבר שהבנתי לא נכון, הוא בביצוע ה foreword של מחלקה. הייתי בטוח כי בשביל שה RTTI יתפוס את התכונות ב published, אני צריך להצהיר אותן מחדש גם מחלקה שיורשת אותם ממחלקת האב. אז מסתבר שהסיבה היחידה לעשות את זה, היא לשנות רמת חשיפה. כלומר אם הם נחשפו כבר ב published אין צורך בזה.

בקיצור, זמנים קשים עוברים עלי🙂
אז תהנו בנתיים מהרצאת בזק בנושא הפוסט: WAT ?
ותודה לאורן על הקישור🙂

מחשבה אחת על “WAT I have learned about …

  1. מאיר

    הסוגריים בד"כ אופציונליים (נזקקים במקרים בהם מציינים ריק, tuples מקוננים או חלק מביטוי גדול יותר), הפסיקים הם שקובעים אם מדובר ב-tuple.

    כדאי גם לקשר לתיעוד של פייתון "קצת" חדש יותר (הנ"ל הוא 1.5p1 העדכני הוא 2.7.2)😉
    http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences

    בכל מקרה, תמיד כיף לגלות דברים חדשים.

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s