Menu
Coddy logo textTech

הבעיה שטיפוסים גנריים פותרים

חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 57 מתוך 73.

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

אפשרות ראשונה: לכתוב עותק נפרד לכל טיפוס. גופי הפונקציות זהים; רק ההערות שונות:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

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

אפשרות שנייה: לאחד אותן לפונקציה אחת עם הטיפוס any:

local function echo(value: any): any
    return value
end

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

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

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מבוא ל-Luau

תרגלו בעצמכם: קומפיילר Luau אונליין