دارت (Dart) برای برنامه نویسان جاوا اسکریپت — راهنمای کاربردی

۲۰۶ بازدید
آخرین به‌روزرسانی: ۰۷ شهریور ۱۴۰۲
زمان مطالعه: ۳ دقیقه
دارت (Dart) برای برنامه نویسان جاوا اسکریپت — راهنمای کاربردی

دارت یک زبان برنامه‌نویسی است که از سوی گوگل برای توسعه اپلیکیشن‌های چند پلتفرمی بر مبنای فریمورک فلاتر (Flutter) معرفی شده است. با این حال اگر برنامه‌نویس زبان دیگری مانند جاوا اسکریپت باشید، یادگیری دارت را لذت‌بخش خواهید یافت. در همین راستا، این مقاله جهت آشنایی برنامه‌نویسان جاوا اسکریپت با دارت (Dart) نگارش یافته است.

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

شرط‌ها باید نوع استاتیک bool داشته باشند

دارت علاوه بر نوع داده‌های مختلف، عموماً زبان سخت‌گیرانه‌تری است.

در جاوا اسکریپت می‌توان از هر مقدار قابل تبدیل به بولی در شرط استفاده کرد. به مثال زیر توجه کنید:

1var name = 'Joe';
2if (name) {
3  // do something...

اگر تلاش کنید کد معادل را در دارت بنویسید با این پیام مواجه می‌شوید:

Conditions must have a static type of ‘bool’

یعنی شرط‌ها باید نوع استاتیک bool داشته باشند. با تغییر دادن کد فوق به صورت زیر می‌توانید این خطا را رفع کنید:

1if (name.length > 0)

اما رویکرد ترجیحی به صورت زیر است:

1if (name.isNotEmpty)

همچنین باید اشاره کنیم که در دارت عملگر (===) وجود ندارد.

Console.log کجاست؟

با وجود ابزارهای خوب دیباگی که امروزه در اختیار توسعه‌دهندگان قرار داده شده است، استفاده از Console.log دیگر توجیهی ندارد، اما برخی افراد عادت‌های قدیمی را به سختی ترک می‌کنند. در دارت می‌توان به جای Console.log از print استفاده کرد. دارت از میان‌یابی رشته‌ها پشتیبانی می‌کند و از این رو می‌توان کدی مانند زیر که در جاوا اسکریپت نوشته می‌شود:

1console.log('Name is%s', name);

را در دارت به صورت زیر نوشت:

1print('Name is $name');

اگر می‌خواهید به مشخصه‌های متغیر دسترسی پیدا کنید یا تابع‌هایی را فراخوانی کنید، می‌توانید آن را داخل آکولاد قرار دهید:

1print('Length is ${name.length}');

پارامترهای تابع

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

1getFullName('John', 'Doe');

یا می‌توانید آن‌ها را با نام ارسال کنید:

1getFullName(firstName: 'John', lastName: 'Doe');

برای سازنده‌ها می‌توانید از this.fieldName استفاده کنید تا به دارت اعلام کنید که مقدار ارسال‌شده باید به مشخصه انتساب یابد.

1Contact(this.firstName);

مدیریت آرایه‌ها

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

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

Final و Const

تفاوت کلیدی بین Final و Const این است که Final متغیر را توصیف می‌کند، اما Const خود مقدار را توصیف می‌کند. متغیر Final تنها یک بار می‌تواند تنظیم شود، اما مقداری که به آن اشاره می‌کند، می‌تواند تغییر پیدا کند، در حالی که مقدار Const فریز شده و نمی‌توان آن را تغییر داد.

نکته جالب دیگر که در هنگام استفاده از فایل analysis_options فلاتر متوجه می‌شویم، استفاده از سازنده‌های Const در موارد ممکن در زمان ایجاد ویجت‌ها است. این کار می‌تواند تأثیر زیادی روی عملگر اپلیکیشن داشته باشد، زیرا امکان کش کردن ویجت‌ها را در فریمورک فعال می‌کند.

Fat Arrow

علامت Fat Arrow یا همان <= می‌تواند برای تابع‌های تک‌خطی مورد استفاده قرار گیرد. برای نمونه به جای کد زیر:

1someField: () {
2  return true;
3},

می‌توان از کد تک‌خطی زیر استفاده کرد:

1someField: () => true,

این تفاوت کوچکی به نظر می‌رسد، اما قطعاً می‌تواند تأثیر مثبتی بر خوانایی کد بگذارد.

سخن پایانی

در پایان چند نکته دیگر را که باید در خاطر داشته باشید نیز مورد اشاره قرار می‌دهیم.

  • برای تبدیل یک مقدار به مثلاً نوع Double می‌توان هم از double.parse و هم double.tryParse استفاده کرد. تبدیل اول در صورت موفق نبودن خطایی صادر می‌کند، اما دومی چنین حالتی ندارد.
  • می‌توان از عملگر null-aware (یعنی contact?.firstName) برای آسان‌تر ساختن مدیریت مقادیر تهی استفاده کرد.

امیدواریم این مقاله به شما کمک کرده باشد با برخی جنبه‌های کمتر شناخته‌شده زبان دارت بهتر آشنا شوید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
flutter-community
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *