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


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.