پرش به مطلب اصلی

تابع‌ها و متغیرها

معرفی

فلسفه طراحی اصلی زبان برنامه‌نویسی Wave این است که ضمن حفظ تعادل بین عملکرد سطح پایین و انتزاع سطح بالا، محیطی کارآمد و انعطاف‌پذیر برای توسعه نرم‌افزار فراهم کند. در این بخش عناصری که برنامه Wave را تشکیل می‌دهند، یعنی تابع‌ها و متغیرها، معرفی می‌شوند.

تابع‌ها واحدهای اساسی برای تعریف عملکرد و منطق برنامه هستند و متغیرها نقشی در ذخیره و مدیریت داده‌های مورد نیاز در این فرایند دارند. با درک دقیق روش تعریف و استفاده از تابع‌ها و متغیرها، می‌توانید ساختار و اهداف طراحی زبان Wave را به‌طور عمقی‌تر بهره‌گیری کنید.


تابع

در Wave، تابع‌ها بلوک‌های کد قابل‌استفاده مجدد هستند که به‌طور مستقل قابل اجرا هستند. می‌توان عملکردها یا محاسبات خاصی را به‌صورت یک واحد بسته‌بندی کرد و هر زمان که در سراسر برنامه نیاز است، آن‌ها را فراخوانی کرد.

استفاده از تابع‌ها می‌تواند کدهای تکراری را کاهش دهد و برنامه را به‌طور منطقی تفکیک کرده و موجب افزایش خوانایی و قابلیت نگهداری شود. همچنین برای اهداف متنوعی مانند پردازش محاسبات، مدیریت ورودی/خروجی و تفکیک منطق بهره‌برداری می‌شوند.

در Wave، تابع‌ها با کلمه کلیدی fun تعریف می‌شوند و شامل نام تابع، لیست پارامترها و بدنه تابع محصور در آکولاد {} هستند.

تعریف تابع

در Wave، ساده‌ترین شکل تعریف تابع به صورت زیر است.

fun main() {
// کد خود را اینجا بنویسید
}

تابع main نقطه ورود اجرای برنامه است و در یک برنامه Wave حتماً باید یک تابع main وجود داشته باشد. برنامه از این تابع شروع به اجرا می‌کند.

تابع می‌تواند بسته به نیاز پارامتر داشته باشد و نتایج محاسبه یا مقادیر را به محل فراخوانی بازگرداند. اگر یک تابع مقدار بازگشتی داشته باشد، نوع بازگشت را در بخش اعلام تابع مشخص می‌کند.

نمونه: تابع ساده

مثال زیر یک تابع ساده است که دو عدد صحیح را می‌گیرد و مجموع آن‌ها را بازمی‌گرداند.

fun add(a :i32, b :i32) -> i32 {
return a + b;
}

fun main() {
var result = add(5, 7); // فراخوانی تابع add
println(result); // خروجی: 12
}

در این مثال، تابع add دو پارامتر عدد صحیح a و b را می‌گیرد، حاصل جمع آن‌ها را محاسبه کرده و نتیجه را بازمی‌گرداند. در تابع main، تابع add فراخوانی شده و مقدار بازگشتی در یک متغیر ذخیره و سپس چاپ می‌شود.

به این صورت، تابع‌ها می‌توانند عملکرد خاصی را کپسوله کرده و به امکان استفاده مجدد در بخش‌های مختلف برنامه را فراهم کنند.

متغیرها

متغیرها برای ذخیره و دستکاری داده‌ها در برنامه استفاده می‌شوند. Wave به طور واضح متغیرهای قابل تغییر و غیرقابل تغییر را حین تعریف آنها از هم جدا می‌کند تا نیات تغییر داده‌ها را در سطح کد آشکار کند.

با این کار، تغییر وضعیت برنامه واضح‌تر می‌شود و خطاهای ناشی از تغییرات غیر عمدی مقادیر کاهش می‌یابد.

متغیرهای قابل تغییر

در Wave، متغیرها به طور پیش‌فرض قابل تغییر (mutable) هستند. یعنی حتی پس از تعریف شدن نیز می‌توانند در طول اجرای برنامه تغییر یابند.

متغیرهای قابل تغییر با استفاده از کلیدواژه var تعریف می‌شوند.

var x :i32 = 10;
x = 20;

در کد بالا، x مقدار اولیه 10 را دارد و سپس می‌تواند به 20 تغییر کند. برای داده‌هایی که باید وضعیتشان تغییر کند، از متغیرهای قابل تغییر استفاده می‌شود.

متغیرهای غیرقابل تغییر

وقتی یک متغیر به صورت غیرقابل تغییر (immutable) اعلام می‌شود، پس از تخصیص مقدار اولیه نمی‌توان آن را تغییر داد. متغیرهای غیرقابل تغییر با استفاده از کلیدواژه let تعریف می‌شوند.

let y :i32 = 5;
// y = 10; // خطا: نمی‌توان مقدار یک متغیر غیرقابل تغییر را تغییر داد.

متغیرهای غیرقابل تغییر تضمین می‌کنند که مقدار آن‌ها تغییر نخواهد کرد و بنابراین به افزایش پایداری و پیش‌بینی‌پذیری برنامه کمک می‌کنند. استفاده از متغیرهای غیرقابل تغییر برای داده‌های ثابت که نیازی به تغییر ندارند توصیه می‌شود.

در Wave، می‌توانید با استفاده از کلیدواژه let و mut به‌طور صریح قابلیت تغییرپذیری را مجاز کنید.

let mut y :i32 = 5;
y = 10;

در این حالت، متغیر با let تعریف شده ولی با استفاده از کلیدواژه mut تغییر مقدار مجاز می‌شود.

مثال‌هایی از اعلان متغیرها

اینجا نمونه‌هایی از تعریف متغیرهای قابل تغییر و غیرقابل تغییر با انواع مختلف آورده شده است.

var x :i32 = 10;
let y :f64 = 3.14159;
var name :str = "Wave";
let is_active :bool = true;

در این مثال، x و name متغیرهای قابل تغییر هستند، در حالی که y و is_active متغیرهای غیرقابل تغییر می‌باشند. در Wave، var و let را جداگانه تعریف می‌کنند تا قابلیت تغییرپذیری داده‌ها در سطح کد مشخص شود.

با استفاده مناسب از متغیرهای قابل تغییر و غیرقابل تغییر، می‌توان یکپارچگی داده‌ها را حفظ کرده و برنامه‌ای پایدار و پیش‌بینی‌پذیر نوشت.