انواع متغیر ها در زبان برنامه نویسی دارت (Dart) برای فریم ورک فلاتر ، مبحثی است که در این پست از تجاری اپ ما قصد داریم به آن بپردازیم.
در پست های پیشین به این موضوع اشاره شد که زبان برنامه نویسی که باید برای فریم ورک فلاتر استفاده کنیم زبان برنامه نویسی دارت (Dart) است. برای اطلاعات بیشتر در مورد Flutter اینجا کلیک کنید.
پیش از آن که به تعریف متغیر ها برسیم به جدول زیر که حاوی کلمات رزرو شده توسط زبان برنامه نویسی دارت است دقت کنید.
در تصویر فوق تمامی کلمات کلیدی که مشابه دیگر زبان های برنامه نویسی توسط خود Dart رزرو شده است و ما اجازه استفاده از آنها را نداریم را می بینید.
در ادامه و در مثال ها متد main را زیاد خواهید دید. فریم ورک فلاتر دارای یک متد main است که در واقع اولین دستوری است که اجرا می شود. و تمامی دستورات شما اعم از variable ها، توابع و غیره همگی درون تابع main قرار می گیرند. اگر به هر دلیلی این تابع وجود نداشت و یا دستورات شما خارج از این تابع نوشته شد، برنامه شما با مشکل مواجه خواهد شد.
نکته: در وب سایت اصلی Dart بر روی آیتم Try Dart کلیک کنید تا به بخش Editor آنلاین Dart هدایت شوید. این Editor برای کد های ساده و سبک مانند تمرین انواع متغیر ها که موضوع آموزش فعلی ماست، بسیار مناسب است. در همین آموزش هم ما از Editor آنلاین Dart استفاده می کنیم.
متغیر ها در زبان برنامه نویسی Dart نیز همانند بقیه زبان ها تعریف مشابه ای دارد. Variable ها فضا هایی از حافظه ها هستند که توسط برنامه نویس نام گذاری و استفاده می شوند. متغیر ها در زبان برنامه نویسی دارت نیز همانند بقیه زبان های برنامه نویسی باید از یک سری اصول قوانین پیروی کند. در ادامه نحوه استفاده از Variable ها یا متغیر ها را در زبان برنامه نویسی Dart بررسی می کنیم.
در زبان برنامه نویسی Dart شما می توانید به دو صورت متغیر تعریف کنید. یک حالت، شما نوع متغیر را مستقیما مشخص می کنید. و حالت دیگر نوع متغیر را آزاد یا نامشخص می گذارید تا با اولین مقداردهی نوع مقدار داده شده به متغیر انتصاب داده شود.
برای تعریف متغیر ها در زبان برنامه نویسی Dart شما می توانید کلمه کلیدی var را ابتدای نام متغیر بیاورید. با این روش شما متغیری را تعریف کرده اید که نوع مشخصی ندارد و با اولین مقداردهی نوع مقدارش را به خود می گیرد. از آن به بعد تنها می توانید همان نوع مقدار را درون متغیر قرار دهید.
نکته: این حالت از تعریف متغیر ها همانند تعریف متغیر در زبان برنامه نویسی کاتلین است.
همچنین بخوانید: تعریف متغیر در کاتلین
به کد زیر دقت کنید:
main() {
var x1 = "Tejariapp.com";
}
همانطور که مشاهده می کنید ما یک متغیر با نام x1 تعریف کرده ایم و مقدار درون آن را از نوع String قرار دادیم. پس می توان گفت نوع داده متغیر x1 چیزی جز String نیست. و اگر در ادامه کد ها مقداری جز String به x1 بدهیم، برای مثال کد را به صورت زیر تغییر دهیم
main() {
var x1 = "Tejariapp.com";
x1 = 24324;
}
با خطای زیر مواجه خواهیم شد.
A value of type ‘int’ can’t be assigned to a variable of type ‘String’ – line 4
حال فرض کنید می خواهیم مقدار متغیر x1 را در خروجی نمایش دهیم. برای این کار از دستور print به صورت زیر استفاده خواهیم کرد.
main() {
var x1 = "Tejariapp.com";
print(x1);
}
درخروجی شما خواهید دید که عبارت Tejariapp.com نمایش داده می شود.
نکته: توجه کنید که زبان Dart مانند زبان های دیگر مثل Java، php و غیره باید در انتهای دستورات خود از ( ; ) استفاده کنید.
ما می توانیم از هر نوع data type در زبان برنامه نویسی Dart استفاده کنیم. از جمله String، Int، double، List، Boolean، Maps و غیره. که در ادامه آموزش ها با تمام این data type ها کار خواهیم کرد. برای نمونه کد بالا را با مقدار Int به صورت زیر تغییر می دهیم.
main() {
var x1 = 22;
print(x1);
}
پس از اجرا خواهید دید که مقدار 22 را در خروجی چاپ می کند.
حال می خواهیم یک List در Dart تعریف کنیم اما نکته حائز اهمیت این است که تمامی عناصر لیست از یک نوع یکسان نیستند. و هرکدام از عناصر نوع مخصوص به خود را دارد. به کد زیر دقت کنید:
main() {
var x1 = [20 , "tejariapp.com" , true , 25.5];
print(x1);
}
همانطور که می بینید ما یک لیست تعریف کردیم که مقدار اول آن از نوع Int، مقدار دوم از نوع String، مقدار سوم از نوع boolean و مقدار چهارم هم از نوع double است و در نهایت خروجی به صورت زیر نمایش داده می شود.
[20, tejariapp.com, true, 25.5]
پس با این روال مشخص است که عناصر لیست هیچ محدودی در data type ندارند. همچنین می توان تمامی عناصر را از یک نوع قرار داد.
همانطور که گفتیم ما می توانیم متغیر ها را به صورت زیر تعریف کنیم.
var x1 = “tejariapp.com”;
کلمه کلیدی var این امکان را به شما می دهد که همان ابتدا زمان تعریف متغیر، نیازی نباشد نوع متغیر را مشخص کنید. و در ادامه با اولین مقدار دهی، نوع متغیر برابر می شود با نوع اولین مقدار منتصب. اما اگر بخواهیم همان زمان تعریف متغیر، یک نوع مشخص به آن بدهیم که در ادامه در صورت مقداردهی مجدد، تنها مقادیر از همان نوع مقدار اولیه، بتوانند ذخیره کنند به صورت زیر عمل می کنیم. برای تعریف متغیر با نوع مشخص می توانیم به صورت زیر کد نویسی کنیم.
main() {
List x1 = [20 , "tejariapp.com" , true , 25.5];
print(x1);
}
همانطور که می بینید ما var را تبدیل به List کردیم و مجددا کد را اجرا می کنیم. اما نتیجه تغییری نخواهد کرد و کد به درستی عمل می کند. اگر مقدار را String یا هر مقدار دیگری قرار دهیم مشخصا با خطای زیر مواجه می شویم.
A value of type ‘List<Object>’ can’t be assigned to a variable of type ‘String’ – line 2
بقیه data type ها هم به همین صورت خواهند بود. برای مثال برای boolean به صورت زیر خواهد شد.
main() {
bool x1 = true;
print(x1);
}
نکته: شما می توانید با استفاده از ( // ) دستورات خود را کامنت کنید و خوانایی کد خود را بیشتر کنید.
تصور کنید شما می خواهید متغیری داشته باشید که مقدار درون آن هر زمان از هر نوعی باشد، Dart از شما ایرادی نگیرد. به این معنی که مثلا متغیر شما در ابتدای کد ها مقدار String داشته باشد اما در ادامه و در شرایط خاصی، به آن متغیر مقدار Int دهید. و همچنین در ادامه، مقادیر از هر نوع دیگری داشته باشد.
زبان برنامه نویسی Dart با استفاده از کلمه کلیدی dynamic این امکان را برای شما فراهم کرده است. شما می توانید متغیری داشته باشید که هر زمان و هر کجا از کدهایتان بتوانید مقادیر با انواع مختلف به آن بدهید. به کد زیر دقت کنید:
main() {
dynamic x1 = 234;
print(x1);
x1 = "tejariapp.com";
print(x1);
x1 = true;
print(x1);
}
خروجی کد فوق به صورت زیر خواهد بود.
234
tejariapp.com
true
همانطور که میبنید ما می توانیم هر نوع مقداری را درون متغیر x1 قرار دهیم و خروجی را بدون هیچ مشکلی چاپ کنیم. این قابلیت تنها با کلمه کلیدی dynamic امکان پذیر است (به نوع تعریف متغیر x1 دقت کنید).
نوع متغیر دیگری در زبان برنامه نویسی Dart وجود دارد که در اکثر زبان های برنامه نویسی استفاده می شود و بسیار پرکاربرد است.
نوع داده Map که به شما اجازه می دهد لیست خود را بصورت key / value مشخص کنید. به این معنی که هر آیتم از لیست شما یک کلید داشته باشد ( مشابه HashMap در زبان برنامه نویسی Java). به کد زیر دقت کنید:
main() {
dynamic x1 = {
1 : "tejariapp.com" ,
2 : "flutter" ,
3 : "dartlang"
};
print(x1);
}
نکته: توجه کنید که ما نوع متغیر را dynamic قرار دادیم اما می توانید مستقیما از نوع Map برای متغیر x1 استفاده کنید.
برای مقدار دهی به صورت Map شما باید مقادیر را درون ( {} ) قرار دهید و به صورت زیر مقدار دهی کنید.
{
key : value ,
key : value ,
…
{
نکته: در مقدار دهی نوع Map نیز شما محدودیتی در استفاده از data type ها ندارید. یعنی می توانید کلید و یا مقدار هر آیتم را از هر نوعی که می خواهید مشخص کنید.
به کد زیر دقت کنید:
main() {
Map x1 = {
1 : "tejariapp.com" ,
"item 2" : "flutter" ,
3 : true
};
print(x1);
}
همانطور که می بینید در کلید ها ما کلید دوم را از نوع String قرار دادیم در صورتی که کلید اول و سوم از نوع int است. در بخش مقادیر ما مقدار اول و دوم را از نوع String قرار دادیم اما نوع مقدار سوم از نوع boolean است. در نتیجه شما می توانید key و value را در هر آیتم از هر نوعی که نیاز دارید تعریف کنید.