היום למדתי: שלוש נקודות ברובי
25/11/2023
אופרטור שלוש נקודות ברובי קיים מסתבר כבר די הרבה זמן (מגירסה 2.7), אבל איכשהו עבר לי מתחת לרדאר. תפקידו להעביר את כל הפרמטרים שפונקציה מקבלת לפונקציה אחרת, כלומר לגרום לקוד כזה לעבוד:
def bar(x, y, z, **extra)
puts "x = #{x}, y = #{y}, z = #{z}, #{extra}"
end
def foo(...)
bar(...)
end
foo(10, 20, 30, hello: "world")
האופרטור מחליף תבנית ישנה יותר וקצת יותר מסורבלת שגם קיימת בפייתון:
def bar(x, y, z, **extra)
puts "x = #{x}, y = #{y}, z = #{z}, #{extra}"
end
def foo(*args, **kwargs)
bar(*args, **kwargs)
end
foo(10, 20, 30, hello: "world")
ודבר נוסף - בעבודה על פרויקט קיים, במיוחד כשלא משדרגים את השפה כשיוצאת גירסה חדשה, קל לפספס תחביר חדש ואפילו להעביר שנים בלי לשים לב אליו. זה לא קורה לי בשפות תכנות שאני מלמד כי שם הצרכים שונים. מאחר וגירסה חדשה של שפת תכנות יוצאת מקסימום פעם בשנה, שווה לעשות הרגל ולבדוק את רשימת החידושים בכל גירסה כשהיא יוצאת. גם אם נבחר לא להשתמש בכל טריק חדש שמתווסף, זה לא נעים להיות מופתעים באיחור של 4 שנים.