טיוטה:וריאנט (תכנות)
וריאנט (באנגלית: variant) הוא טיפוס המשמש במספר שפות תכנות, כגון Visual Basic, OCaml, Delphi ו-C++.
ב-Visual Basic משתנה וריאנט מהווה tagged union (שיכול להיות מוגדר לכמה טיפוסי משתנים שונים) שיכול לייצג כל טיפוס נתונים (למשל, שלם, משתנה נקודה צפה - float, משתנה single או double, אובייקט וכדומה) מלבד מחרוזת באורך קבוע.
ניתן להשתמש במשתנה וריאנט כאשר טיפוס המשתנה ידוע רק בזמן ריצה, כשטיפוס המשתנה צפוי להשתנות תוך כדי התוכנית, או כאשר יוצרים מתודה שמצריכה פרמטרים אופציונליים או מערך פרמטרים. למעשה, בשפות תכנות בעלות מערכת טיפוסים דינמית, לעיתים משתנה וריאנט הוא טיפוס המשתנה היחיד הקיים. עם זאת, השימוש במשתנה וריאנט שלא הוצהר כך במפורש, אינו מומלץ בדרך כלל בתקני שפות התכנות המשתמשות בטיפוס זה.
בשפת Visual Basic .NET טיפוס הווריאנט הוחלף בטיפוס "אובייקט". ישנן נקודות דמיון בקונספט בין וריאנט לאובייקט, אך גם הבדלים משמעותיים, ולא ניתן לבצע המרה ישירה בין טיפוסים אלו. כאשר נדרשת המרת טיפוסים, למשל בעת עבודה מול אובייקט Visual Basic 6 COM, המתודולוגיה המקובלת היא שימוש ב-marshaling.
בשפות כמו OCaml ו-Haskell טיפוס הווריאנט מהווה את אבן הבניין הסטנדרטית של השפה לייצוג טיפוסי נתונים רבים.
שימוש אחר במונח "וריאנט", הנבדל מההגדרה לעיל, הוא בהקשר של טיפוס נתונים אלגבראי (דומה ל-tagged union), שמתודות הבנאי שלו נקראות לרוב "וריאנט".
דוגמת קוד
[עריכת קוד מקור | עריכה]ב-Visual Basic ניתן להצהיר על משתנה וריאנט A בשתי צורות - מרומזת (implicit) ומפורשת (explicit):
Dim A
Dim A as Variant
בשפת Delphi משתנה A יוגדר כמשתנה וריאנט באופן הבא:
var A: variant;