نوع داده
این سند انواع مختلف داده ارائه شده توسط زبان برنامهنویسی Wave را توضیح میدهد. در Wave، میتوانید با استفاده از انواع دادههای مختلف، مقادیر را ذخیره و محاسبه کنید و هر نوع داده به وضوح روش نمایش و مدیریت حافظه آن را تعریف میکند.
تعریف دقیق نوع داده یکی از فلسفههای اصلی طراحی Wave است.
Wave یک سیستم با تایپ محکم و کامل است. تمامی اعلانهای var/fun و مقداردهی اولیه متغیرها به نوع صریح نیاز دارند و استنباط نوع مبتنی بر زمینه پشتیبانی نمیشود. بنابراین اگر مانند var x = 1; نوعی وجود نداشته باشد، کامپایل شکست خواهد خورد.
با این کار، میتوانید قصد کد را به وضوح بیان کنید، خطاها را در زمان کامپایل زودتر کشف کنید و از استفاده کارآمد از حافظه و اجرای پایدار اطمینان حاصل کنید.
نوع صحیح
نوع صحیح برای ذخیره مقادیر صحیح استفاده میشود.
در Wave معمولاً از i32 (صحیح علامتدار 32 بیتی) و u32 (صحیح بدون علامت 32 بیتی) استفاده میشود، اما میتوان اندازه بیت صحیح را بر اساس نیاز بهصورت دقیق تعیین کرد.
انواع صحیح علامتدار از 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
در Wave، null یک لیترال رسمی است.
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];
هر نوع داده بهگونهای طراحی شده است که میتوان محدوده و اندازه مناسب با کاربرد و ویژگی آن را انتخاب کرد. انتخاب نوع داده مناسب میتواند مدیریت حافظه را بهطور موثری انجام دهد و همچنین ثبات و قابلیت خواندن کد را بهشدت افزایش دهد.