वह क्या हैं ?? डार्ट में दोहरा प्रश्न चिह्न?


86

कोड की निम्नलिखित पंक्ति में दो प्रश्न चिह्न हैं:

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

मातलब क्या है?

जवाबों:


172

??डबल प्रश्न चिह्न ऑपरेटर का अर्थ है "अगर शून्य"। उदाहरण के लिए, निम्नलिखित अभिव्यक्ति लें।

String a = b ?? 'hello';

इसका मतलब है aबराबरी b, लेकिन अगर bअशक्त है तो aबराबरी 'hello'।

एक अन्य संबंधित ऑपरेटर है ??=। उदाहरण के लिए:

b ??= 'hello';

इसका मतलब है कि यदि bअशक्त है तो इसे बराबर सेट करें hello। अन्यथा, इसे न बदलें।

संदर्भ

शर्तें

डार्ट 1.12 रिहाई खबर सामूहिक रूप से निम्नलिखित के लिए भेजा अशक्त-अवगत ऑपरेटरों :

  • ?? - यदि नल ऑपरेटर
  • ??= - अशक्त-असाइनमेंट
  • x?.p - अशक्त-पहुँच
  • x?.m() - अशक्त-विधि विधि मंगलाचरण

3
दिलचस्प है कि यह क्यों है ?? और ?:, यह किसी के लिए काफी भ्रामक है जो PHP से आता है, जैसा कि ?? PHP में इसका मतलब पूरी तरह से विपरीत है।
— वेदमांत

1
@Vedmant शायद क्योंकि ?पहले से ही टर्नरी ऑपरेटर द्वारा उपयोग किया जा रहा है String a = b == true ? 'x' : 'y';:। अगर इफ-नल ऑपरेटर टर्नरी नल चेक के लिए सिर्फ शॉर्टहैंड की तरह निकलता है String a = a == null ? 'hello : a;।
— ब्रूनो फिंगर

1
@BrunoFinger ?का उपयोग टर्नरी ऑपरेटर के लिए PHP में उसी तरह किया जाता है, और $a = $b === true ? $b : 'y'आपके जैसे टाइप कर सकते हैं $a = $b === true ?: 'y'या इसके बजाय शॉर्टकट हैं $a = $b === true ? 'x' : $b-$a = $b === true ?? 'x'
— वेदांत

|| स्पष्ट imo होगा
— Ced
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.