סוגי נתונים
מסמך זה מתאר את סוגי הנתונים השונים המסופקים על ידי שפת התכנות Wave. ב-Wave ניתן לאחסן ולחשב ערכים באמצעות סוגי נתונים שונים, וכל סוג נתונים מגדיר בבירור את אופן הייצוג ועיבוד הזיכרון של הנתונים.
קביעה ברורה של סוגי הנתונים היא אחת מהפילוסופיות הבסיסיות בעיצוב של Wave.
Wave היא מערכת חזקה לחלוטין. כל הכרזות var/fun ואתחול משתנים דורשים סוג מפורש, ואין תמיכה בהסקת סוגים מבוססת הקשר. לכן, var x = 1; ללא סוג תיכשל בקימפול.
באמצעות כך, ניתן לבטא את כונת הקוד בצורה ברורה, לזהות שגיאות בשלב הקימפול ולהבטיח שימוש יעיל בזיכרון וביצוע יציב.
סוגי מספרים שלמים
סוג מספרים שלמים משמש לאחסון ערכי שלם.
i32 (מספר שלם עם סימן בגודל 32-ביט) ו-u32 (ללא סימן) הם הסוגים הנפוצים בשימוש ב-Wave, אך ניתן להגדיר את גודל הביטים של המספר במדויק במידת הצורך.
סוג שלם עם סימן מסופק מ-i8 עד i1024, וללא סימן מ-u8 עד u1024.
באמצעות כך ניתן לספק דרישות מגוונות ממחשוב בסיסי ועד עיבודים קריפטוניים ותכנות מערכות נמוכות רמה.
להלן דוגמה פשוטה לשימוש בסוגי מספרים שלמים.
var a: i32 = 100;
var b: u32 = 200;
סוג נקודה צפה
סוג נקודה צפה משמש לאחסון ערכים ממשיים.
סוג הנקודה הצפה הבסיסי ב-Wave הוא f32, אך למי שדורש דיוק גבוה יותר יש אפשרות לבחור סוג גדול יותר.
Wave מספקת סוגי מספרים עם נקודה צפה מ-f32 עד f128, כדי לאפשר למשתמש לבחור בין דיוק להכיל ביצועים.
באמצעות כך ניתן לטפל בחישובים רבים ומגוונים מקישוטים פשוטים ועד חישובים מדעיים מדויקים.
להלן דוגמה לשימוש בסוגי נקודה צפה.
var pi: f32 = 3.14;
var e: f64 = 2.71828;
סוגי מחרוזות
סוגי מחרוזות משמשים לטיפול בנתוני טקסט.
ב-Wave משתמשים במילת המפתח str כדי להכריז על מחרוזות, ומייצגים מחרוזות ליטרל במרכאות כפולות.
מחרוזות מנוצלות בצורה רחבה בתוכניות להדפסת הודעות, עיבוד קלט משתמש ועוד.
להלן דוגמה בסיסית לשימוש בסוגי מחרוזות.
var text: str = "שלום ווייב";
סוג בוליאני
סוג בוליאני משמש להצגת ערכים של אמת (True) או שקר (False).
ב-Wave משתמשים בסוג bool , כאשר הערכים הם true או false.
סוג בוליאני ממלא תפקיד מפתח בתנאים ולולאות והוא משמש לשליטה בזרימת התוכנית.
var isActive: bool = true;
var isAvailable: bool = true;
סוגי תווים
סוג תווים משמש לאחסון תו יחיד.
ההכרזה מתבצעת באמצעות מילת המפתח char והיא יכולה להכיל תו אחד בלבד.
סמלים מילוליים מסומנים באמצעות גרשיים ('').
var letter: char = 'A';
סוג בייט
סוג בייט משמש לאחסון נתונים בגודל של 1 בייט. סוג זה יעיל במיוחד לטיפול בנתונים בינאריים, קלט/פלט קבצים ותכנות רשת כאשר יש צורך בטיפול ברמת נמוכה.
ב-Wave יש להשתמש במילת המפתח byte כדי להכריז על סוג בייט.
var byteData: byte = 0xFF;
סוג מצביע
סוג מצביע משמש להתייחסות ישירה לכתובת זיכרון.
ב-Wave, סוג מצביע מוכרז בפורמט ptr<T>.
מצביעים משמשים כאשר יש צורך בגישה לזיכרון ברמת נמוכה, ומככבים בעיקר במשימות תכנות מערכת או קוד המצריך ביצועים גבוהים.
var ptr: ptr<T> = &someVariable;
סמל מילולי null
null ב-Wave הוא סמל מילולי תקני.
nullאינו מזהה. (לא ניתן להכריז עלvar null = ...)- ניתן להקצות את
nullרק לסוגptr<T>.
var p: ptr<i32> = null; // תקין
// var n: i32 = null; // שגיאה
// var b: bool = null; // שגיאה
סוג מערך
סוג מערך משמש לאחסון רציף של מספר ערכים מאותו סוג נתונים.
ב-Wave, הכרזת מערך מתבצעת בפורמט array<סוג, גודל>, כאשר הגודל מוגדר באופן מפורש בשלב ההידור.
כך מקבלים מבנה זיכרון ברור וגישה יציבה.
var numbers: array<i32, 5> = [1, 2, 3, 4, 5];
כל סוג נתונים מתוכנן כך שיוכל לבחור את הטווח והגודל המתאימים בהתאם לשימוש ומאפיניו. בחירה נכונה של סוג הנתונים מאפשרת ניהול זיכרון יעיל, תוך שיפור ניכר ביציבות ובקריאות הקוד.