কি কি ?? ডার্টে ডাবল প্রশ্ন চিহ্ন?


96

নিম্নলিখিত কোডের লাইনটিতে দুটি প্রশ্ন চিহ্ন রয়েছে:

final myStringList = prefs.getStringList('my_string_list_key') ?? [];

অর্থ কি?

উত্তর:


193

??ডবল প্রশ্ন চিহ্ন অপারেটর মানে হলো "যদি নাল"। উদাহরণস্বরূপ, নিম্নলিখিত প্রকাশটি নিন Take

String a = b ?? 'hello';

এর অর্থ aসমান b, তবে যদি bনাল হয় তবে aসমান'hello'

আরেকটি সম্পর্কিত অপারেটর হলেন ??=। উদাহরণ স্বরূপ:

b ??= 'hello';

এর অর্থ যদি bনাল হয় তবে এটির সমান সেট করুন hello। অন্যথায়, এটি পরিবর্তন করবেন না।

রেফারেন্স

শর্তাদি

ডার্ট 1.12 রিলিজ সংবাদ সম্মিলিতভাবে নিম্নলিখিত উল্লেখ নাল-সচেতন অপারেটার :

  • ?? - যদি নাল অপারেটর
  • ??= - নাল-সচেতন কার্য
  • x?.p - নাল-সচেতন অ্যাক্সেস
  • x?.m() - নাল-সচেতন পদ্ধতি অনুরোধ

4
আকর্ষণীয় কেন এটি ?? এবং না?:, পিএইচপি থেকে আসা কারও পক্ষে এটি বেশ বিভ্রান্তিকর ?? পিএইচপি মধ্যে সম্পূর্ণ বিপরীত মানে।
বেদমন্ত

4
সম্ভবত @Vedmant কারণ ?ইতিমধ্যে তিন অপারেটর দ্বারা ব্যবহৃত হচ্ছে: String a = b == true ? 'x' : 'y';। যা if-null অপারেটরটি একটি টার্নারি নাল চেকের মতো কেবল সংক্ষিপ্তরূপে পরিণত হয় String a = a == null ? 'hello : a;
ব্রুনো ফিঙ্গার

4
@BrunoFinger ?তিন অপারেটর জন্য পিএইচপি একই ভাবে ব্যবহার করা হয়, এবং শর্টকাট পছন্দ পরিবর্তে আছে $a = $b === true ? $b : 'y'আপনি টাইপ করতে পারেন $a = $b === true ?: 'y'পরিবর্তে বা $a = $b === true ? 'x' : $b-$a = $b === true ?? 'x'
Vedmant

3

ডার্ট কিছু মূল্যবান অপারেটরদের মানগুলির সাথে ডিল করার জন্য প্রস্তাব দেয় যা শূন্য হতে পারে। একটি হ'ল ?? = এসাইনমেন্ট অপারেটর, যা ভেরিয়েবলের জন্য কেবল তখনই একটি মান নির্ধারণ করে যদি সেই চলকটি বর্তমানে শূন্য থাকে:

int a; // The initial value of a is null.
a ??= 3;
print(a); // <-- Prints 3.

a ??= 5;
print(a); // <-- Still prints 3.

আরেকটি নাল-সচেতন অপারেটর কি ?? , যা অভিব্যক্তির মান শূন্য না হওয়া পর্যন্ত তার বাম দিকে অভিব্যক্তি প্রদান করে, এটি ক্ষেত্রে ডানদিকে অভিব্যক্তিটি মূল্যায়ন করে এবং ফেরত দেয়:

print(1 ?? 3); // <-- Prints 1.
print(null ?? 12); // <-- Prints 12.

আপনি 2 বছর আগে উত্তরের জন্য জিজ্ঞাসা করার জন্য ইতিমধ্যে উত্তর দিয়েছিলেন এমন কোনও পোস্টের উত্তর দিয়েছেন?
আর্থার রে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.