عملگرها یا Operator ها در زبان برنامه نویسی دارت Dart ، مبحثی است که در این مقاله از تجاری اپ ما قصد داریم به آن بپردازیم. اگر قبلا زبان برنامه نویسی دیگری کار کرده اید بی شک درباره Operator ها و نحوه عملکرد آنها اطلاعات دارید. اما ما در این پست تصمیم داریم مجددا مبحث Operator ها این بار در زبان برنامه نویسی Dart را آموزش دهیم تا اگر کسی هم با این مبحث آشنا نیست این امکان برایش فراهم شود تا به طور کامل Operator ها در زبان برنامه نویسی دارت را بشناسد.
زبان برنامه نویسی دارت مانند دیگر زبان های برنامه نویسی از عملگرها یا Operator های زیر پشتیبانی می کند:
در ادامه نمونه های پرکاربرد هر کدام از این دسته عملگرها را با هم بررسی می کنیم. همچنین در آموزش های آتی فلاتر در وب سایت تجاری اپ به کررات از تمام عملگرها یا Operator ها استفاده خواهیم کرد. پس اگر عملگری برای شما نامفهوم بود نگران نباشید چرا که در مقالات آموزشی آینده با مثال های کاربردی تری با Operator ها آشنا خواهید شد.
زبان برنامه نویسی Dart از تمامی Operator های معمول ریاضی به شرح زیر پشتیبانی می کند:
عملگر | مفهوم |
---|---|
+ | Add – برای جمع کردن استفاده می شود |
– | Subtract – برای منها کردن استفاده می شود |
expr- | این علامت به عنوان نفی یا معکوس کردن علامت عبارت استفاده می شود |
* | Multiply – برای عمل ضرب استفاده می شود |
/ | Divide – عمل تقسیم کردن را انجام میدهد |
/~ | این عملگر عمل تقسیم کردن را انجام می دهد و خروجی با نوع integer برمیگرداند |
٪ | این عملگر نیز باقیمانده تقسیم را برمیگرداند |
مثال هایی از تمامی Operator های فوق در زبان برنامه نویسی دارت:
نکته: شما می توانید تمامی مثال های انواع عملگرهای آورده شده در این مقاله آموزشی از تجاری اپ را درون Editor آنلاین سایت اصلی Dart تست کنید.
مثال:
print(2 + 3 == 5);
print(2 - 3 == -1);
print(2 * 3 == 6);
print(5 / 2 == 2.5); // Result is a double
print(5 ~/ 2 == 2); // Result is an int
print(5 % 2 == 1); // Remainder
نکته: در زبان برنامه نویسی دارت شما می توانید مقادیری بجز String نیز درون (“ ”) کنار بقیه رشته ها قرار دهید. برای مثال شما می توانید مقدار یک متغیر را درون double quote جهت نمایش قرار دهید. این قابلیت با قرار دادن علامت ( $ ) قبل از مقدار غیر رشته ای قابل انجام است.
مثال:
main() {
var x3 = 234;
print("this is x3 value : $x3");
}
زبان برنامه نویسی دارت همچنین از operator های افزایشی و کاهشی پشتیبانی می کند.
عملگر | مفهوم |
---|---|
var++ | معادل var = var + 1 می باشد و خروجی آن var +1 است |
++var | معادل var = var + 1 می باشد و خروجی آن var است |
var– | معادل var = var – 1 می باشد و خروجی آن var – 1 است |
–var | معادل var = var -1 می باشد و خروجی آن var است |
شاید کمی در درک تفاوت operator های جدول بالا دچار مشکل شده باشید. دلیل آن نامفهوم بودن آنها در حالت تئوری است. برای درک تفاوت آن ها با دقت به مثال های زیر توجه کنید.
var a, b;
a = 0;
b = ++a; // مقدار را پیش آنکه بخواهد خروجی را درون متغیر جدید بریزد, جمع میکند
assert(a == b); // 1 == 1
a = 0;
b = a++; // ابتدا خروجی را میدهد و سپس مقدار را جمع میکند
assert(a != b); // 1 != 0
a = 0;
b = --a; // مقدار را پیش از آنکه خروجی بدهد منها میکند
assert(a == b); // -1 == -1
a = 0;
b = a--; // ابتدا خروجی را میدهد و سپس مقدار را منها میکند
assert(a != b); // -1 != 0
همه عملگر ها یا operator های مقایسه ای در زبان برنامه نویسی دارت را در زیر مشاهده می کنید.
عملگر | مفهوم |
---|---|
== | Equal، برابری دو مقدار را بررسی می کند |
=! | Not Equal، نابرابری دو مقدار را بررسی می کند |
< | Greater than، بزرگتر بودن را بررسی می کند |
> | Less than، کوچکتر بودن را بررسی میکند |
=< | Greater than or equal to، برای بررسی بزرگتر مساوی استفاده می شود |
=> | Less than or equal to، برای بررسی کوچکتر مساوی بودن دو مقدار استفاده می شود |
تمامی operator های برابری و رابطه ای یا مقایسه ای در زبان برنامه نویسی دارت بسیار مشابه operator ها در دیگر زبان های برنامه نویسی می باشد. این موضوع باعث می شود اگر شما قبلا زبان برنامه نویسی دیگری کار کرده باشید بتوانید خیلی سریع تر با زبان برنامه نویسی دارت ارتباط برقرار کنید.
assert(2 == 2);
assert(2 != 3);
assert(3 > 2);
assert(2 < 3);
assert(3 >= 3);
assert(2 <= 3);
در زبان برنامه نویسی Dart سه عملگر کلیدی برای چک کردن نوع مقادیر به صورت runtime وجود دارد. این عملگرها بسیار پرکاربرد هستند.
عملگر | مفهوم |
---|---|
as | Typecast، برای تبدیل نوع استفاده می شود |
is | برای چک کردن نوع یک مقدار استفاده می شود. اگر true برگرداند به این معنی است که نوع مقدار ما برابر با نوع خاصی است که ما در نظر داریم |
!is | این operator دقیقا برعکس is عمل می کند. به این معنا که اگر false برگرداند مفهوم آن این است که نوع مقدار ما برابر با نوع خاصی است که ما در نظر داریم. |
برای درک بیشتر به مثال زیر دقت کنید. در صورتی که مطمئن نیستید مقدار object برابر با T است از is برای چک کردن این موضوع استفاده کنید.
if (emp is Person) {
// Type check
emp.firstName = 'Bob';
}
اگر به بعضی از مثال های بالا توجه کرده باشید عملگر = برای انتصاب یک مقدار به یک متغیر است (مانند اکثر زبان های برنامه نویسی دیگر). در زبان برنامه نویسی دارت ما بجز عملگر = عملگر دیگری برای این کار داریم. البته فقط در صورتی که متغیر مورد نظر جهت انتصاب برابر با null باشد انتصاب مقدار جدید صورت می گیرید. این عملگر به این صورت نوشته میشود =?? .
// Assign value to a
a = value;
// Assign value to b if b is null; otherwise, b stays the same
b ??= value;
بجز عملگرهای بالا ما عملگرهای های انتصابی دیگری نیز داریم. این عملگرها با عملگرهای دیگر ترکیب شده اند. برای مثال عملگر =+ مقدار را پیش از انتصاب به متغیر جدید، با عملگر + جمع می کند و سپس به متغیر می دهد.
= | –= | /= | %= | >>= | ^= |
+= | *= | ~/= | <<= | &= | |= |
شما می توانید عبارات بولین را با استفاده از عملگر های منطقی، معکوس یا ترکیب کنید.
عملگر | مفهوم |
---|---|
expr! | عبارت را معکوس می کند (false را به true تغییر می دهد و بالعکس) |
|| | منطق OR را پیاده می کند |
&& | منطق And را پیاده می کند |
مثال:
if (!done && (col == 0 || col == 3)) {
// ...Do something...
}
در زبان برنامه نویسی دارت شما می توانید بیت ها را به صورت جداگانه دستکاری کنید.
عملگر | مفهوم |
---|---|
& | And |
| | OR |
^ | XOR |
~ | Unary bitwise complement (0s become 1s; 1s become 0s) |
>> | Shift left |
<< | Shift right |
<<< | Unsigned shift right |
مثال:
final value = 0x22;
final bitmask = 0x0f;
assert((value & bitmask) == 0x02); // AND
assert((value & ~bitmask) == 0x20); // AND NOT
assert((value | bitmask) == 0x2f); // OR
assert((value ^ bitmask) == 0x2d); // XOR
assert((value << 4) == 0x220); // Shift left
assert((value >> 4) == 0x02); // Shift right
زبان برنامه نویسی دارت دو عملگر برای پیاده سازی خلاصه شرط ها دارد. این دو عملگر باعث می شود دیگر نیازی به استفاده از if / else نداشته باشید.
در صورتی که شرط (condition) برابر با true باشد expr1 برمیگردد یا به عبارتی return می شود. همچنین در صورتی که شرط مقدار False برگرداند expr2 برمیگردد.
نوع دیگر شرط های کوتاه در زبان برنامه نویس دارت به صورت زیر است:
در صورتی که expr1 درواقع null نباشد این مقدار برخواهد گشت. در غیر این صورت مقدار expr2 برمیگردد.
به مثال زیر دقت کنید که برای نمونه کوتاه سازی اول پیاده شده و مشخصا در صورتی که isPublic برابر با true باشد مقدار public درون visibility قرار می گیرد. و در غیر این صورت مقدار private .
var visibility = isPublic ? 'public' : 'private';
همچنین مثال زیر برای نمونه کوتاه سازی دوم پیاده شده است، و همانطور که مشخص است در صورتی که متغیر name مقدارش null نباشد مقدار درونش بر میگردد. و در غیر این صورت مقدار Guest برمی گردد.
String playerName(String name) => name ?? 'Guest';
این مثال را به دو صورت دیگر نیز می توانیم پیاده کنیم:
// Slightly longer version uses ?: operator.
String playerName(String name) => name != null ? name : 'Guest';
// Very long version uses if-else statement.
String playerName(String name) {
if (name != null) {
return name;
} else {
return 'Guest';
}
}
زبان برنامه نویسی Dart ویژگی به نام Casecade notiation دارد. این ویژگی به شما اجازه می دهد که بتوانید operator های گوناگون را به صورت زنجیر وار بر روی مقداری اعمال کنید. این کار باعث می شود شما در ساخت و استفاده چندین متغیر صرفه جویی کنید و عملگر های خود را به صورت زنجیر وارد پیاده کنید.
مثال:
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
حال می توان مثال فوق را از حالت زنجیر وار خارج کرد. مانند مثال زیر:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
نکته: عبارت دو نقطه قبل از operator ها خود عملگری خاصی نیست. تنها بخشی از syntax زبان برنامه نویسی دارت است.
دیگر مقالات در زمینه آموزش فلاتر یا Flutter و زبان برنامه نویسی Dart