Newsletter

عملگر ها در دارت

Scroll down
آرزو جزوفاییان
آرزو جزوفاییان
یک
  • محل اقامت:
    ایران
  • شهر:
    تهران
  • تماس:
    09309999386

ژانویه 29, 2025

11:25

arz.dev

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

آشنایی با عملگرهای پایه در دارت

در برنامه نویسی دارت، اپراتورها نقش مهمی در دستکاری داده ها دارند. بیایید به عملگرهای اصلی پشتیبانی شده توسط دارت بپردازیم.

عملگرهای حسابی

از عملگرهای حسابی برای انجام عملیات ریاضی استفاده می شود. جدول زیر عملگرهای حسابی پشتیبانی شده در دارت را فهرست می کند.

+ جمع

– تفریق

* ضرب

/ تقسیم

این عملگرها برای عملیات ریاضی پایه استفاده می شوند. مثال:

    void main() {

      int a = 10, b = 20;

      print('Addition: ${a + b}');

      print('Subtraction: ${a - b}');

      print('Multiplication: ${a * b}');

      print('Division: ${a / b}');

    }

     

اپراتورهای افزایش و کاهش

مقدار یک متغیر را می توان به ترتیب با استفاده از عملگرهای افزایش و کاهش یک عدد افزایش یا کاهش داد. مثال:

     void main() {

      int a = 10;

      a++;

      print('Increment: $a');

      a--;

      print('Decrement: $a');

    }

     

اپراتورهای واگذاری

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

     void main() {

      int a = 10;

      print('Assigned Value: $a');

    }

     

واگذاری مرکب

عملگرهای انتساب مرکب یک عملیات را با یک انتساب ترکیب می کنند. مثال:

     void main() {

      int a = 10;

      a += 20; // a = a + 20

      print('Compound Assignment: $a');

    }

اپراتورهای برابری و رابطه ای

برای مقایسه دو مقدار از عملگرهای تساوی و رابطه ای استفاده می شود. جدول زیر این عملگرها را فهرست می کند.

== برابر با

!= برابر نیست

> بزرگتر از

< کمتر از

>= بزرگتر یا مساوی

<= کمتر یا مساوی

   void main() {

      int a = 10, b = 20;

      print('Equal to: ${a == b}');

      print('Not Equal to: ${a != b}');

      print('Greater than: ${a > b}');

      print('Less than: ${a < b}');

      print('Greater than or equal to: ${a >= b}');

      print('Less than or equal to: ${a <= b}');

    }

اپراتورهای پیشرفته در دارت

پس از آشنایی با عملگرهای پایه دارت، به سراغ برخی از عملگرهای پیشرفته ای می رویم که دارت از آنها پشتیبانی می کند. عملگرهای منطقی عملگرهای منطقی زمانی استفاده می شوند که بخواهیم دو یا چند شرط را با هم ترکیب کنیم. دارت از سه عملگر منطقی پشتیبانی می کند: AND، OR، و NOT. در اینجا توضیحات اپراتور برای هر یک آمده است:

&& منطقی و

|| منطقی

OR ! منطقی نه

  void main() {

      bool isTrue = true, isFalse = false;

      print('AND Operator: ${isTrue && isFalse}');

      print('OR Operator: ${isTrue || isFalse}');

      print('NOT Operator: ${!isTrue}');

    }

     

عملگرهای Bitwise و Shift

عملگرهای بیتی برای دستکاری نمایش دودویی مقادیر استفاده می شوند. آنها در سطح بیت عمل می کنند. در اینجا توضیحات اپراتور برای هر یک آمده است:

& بیتی

| بیتی OR

^ XOR بیتی

~ به صورت بیتی نه

<< شیفت چپ

>> Shift به راست

     void main() {

      int a = 2, b = 3;

      print('Bitwise AND: ${a & b}');

      print('Bitwise OR: ${a | b}');

      print('Bitwise XOR: ${a ^ b}');

      print('Bitwise NOT: ${~a}');

      print('Left Shift: ${a << 1}');

      print('Right Shift: ${a >> 1}');

    }

عملگرهای تست نوع

عملگرهای تست نوع برای بررسی انواع در زمان اجرا استفاده می شوند. دارت از سه نوع عملگر تست پشتیبانی می کند: as, is, and is!.

as به عنوان Typecast

is اگر شی دارای نوع مشخص شده باشد True است است

is! اگر شیء نوع مشخص شده را نداشته باشد درست است

    void main() {

      var number = 10;

      if (number is int) {

        print('Number is an integer');

      }

    }

     

عبارات شرطی

عبارات شرطی در دارت راهی برای ساده کردن عبارات if-else هستند.

condition ? expr1 : expr2
اگر شرط درست باشد، expr1 را برمی‌گرداند. در غیر این صورت، expr2 را برمی گرداند
expr1 ?? expr2

اگر expr1 غیر تهی باشد، مقدار آن را برمی‌گرداند. در غیر این صورت، مقدار expr2 را برمی گرداند

     void main() {

      var a = 10;

      var b = a > 5 ? 'a is greater than 5' : 'a is not greater than 5';

      print(b);

      var c = a ?? 'a is null';

      print(c);

    }

اپراتورهای ویژه دارت

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

  void main() {

      var buffer = StringBuffer()

        ..write('Hello, ')

        ..write('World!');

      print(buffer.toString());


    }

در مثال بالا، ما قادریم چندین متد را روی یک شی (بافر) در یک دستور واحد فراخوانی کنیم.

اپراتور Null Assertion

عملگر ادعای تهی (!) برای فرستادن یک عبارت به نوع غیر قابل تهی زیرین آن استفاده می‌شود و در صورت شکست Cast، یک استثنا در زمان اجرا ایجاد می‌کند. مثال :

void main() {

      int? a = null;

      try {

        int b = a!;

      } catch (e) {

        print('Exception: $e');

      }

    }

در مثال بالا، ما سعی می کنیم یک عدد صحیح nullable را به یک عدد صحیح غیر تهی تبدیل کنیم که منجر به یک استثنا در زمان اجرا می شود.

تابع برنامه و دسترسی مشترک

تابع تابع (()) و دسترسی زیرنویس ([]) به ترتیب برای فراخوانی یک تابع و دسترسی به یک عنصر در یک شاخص خاص در یک لیست استفاده می شود. در اینجا یک مثال است

 void main() {

      var list = [1, 2, 3, 4, 5];

      print('Element at index 2: ${list[2]}');

    

      void printHello() {

        print('Hello, World!');

      }

    

      printHello();

    }



DescriptionOperatorAssociativity
unary postfixexpr++    expr--    ()    []    ?[]    .    ?.    !None
unary prefix-expr    !expr    ~expr    ++expr    --expr      await exprNone
multiplicative*    /    %  ~/Left
additive+    -Left
shift<<    >>    >>>Left
bitwise AND&Left
bitwise XOR^Left
bitwise OR|Left
relational and type test>=    >    <=    <    as    is    is!None
equality==    !=None
logical AND&&Left
logical OR||Left
if-null??Left
conditionalexpr1    ?    expr2    :    expr3Right
cascade..    ?..Left
assignment=    *=    /=   +=   -=   &=   ^=   etc.Right
spread (See note)...    ...?None
Posted in آموزش دارت
Write a comment
© تمامی حقوق محفوظ می باشد.
ایمیل: admin@.com
ارسال پیام
ارسال پیام

    * اطلاعات شما محفوظ خواهد ماند.