डार्ट में दोहरे डॉट (?) के उपयोग की सूची?


141

कभी-कभी मैं यह देखता हूं List list = [];

फिर list..add(color)

1 डॉट ( .) और 2 डॉट ( ..) का उपयोग करने में अंतर क्या है ?

जवाबों:


242

..कैस्केड अंकन के रूप में जाना जाता है । यह आपको एक ही लक्ष्य को दोहराने की अनुमति नहीं देता है यदि आप एक ही वस्तु पर कई तरीकों को कॉल करना चाहते हैं।

List list = [];
list.add(color1);
list.add(color2);
list.add(color3);
list.add(color4);

// with cascade

List list = [];
list
  ..add(color1)
  ..add(color2)
  ..add(color3)
  ..add(color4);

77

यह डार्ट का कैस्केड ऑपरेटर है

var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);

l1एक सूची होने में परिणाम[0, 1, 2, 3]

var l1 = new List<int>().add(0).addAll([1, 2, 3]);

एक त्रुटि के परिणामस्वरूप, क्योंकि .add(0)रिटर्नvoid

..(पूर्व उदाहरण में) को संदर्भित करता है new List(), जबकि .(बाद में) अभिव्यक्ति के पिछले भाग के वापसी मूल्य को संदर्भित करता है।

..एक धाराप्रवाह तरीके से एक एपीआई का उपयोग करने में सक्षम होने के लिए thisसभी तरह के तरीकों में लौटने की आवश्यकता से बचने के लिए पेश किया गया था add()

.. यह सभी वर्गों के लिए बॉक्स से बाहर प्रदान करता है।


उल्लेख करते हुए .. (in former example) refers to new List(), क्या आपका मतलब है कि हम फिर से एक नया निर्माण Listकर रहे हैं जब हम ..मेरी राय में उपयोग नहीं कर रहे हैं । मैं आपके newशब्द से भ्रमित हो गया , क्या यह वास्तव में नया है या आप newयहां कीवर्ड के बारे में बात कर रहे हैं।
कोप्सऑनराड

पहले newअब वैकल्पिक है। ..द्वारा दी गई सूची को संदर्भित करता है new List<int>()और add(0) addAll(...)दोहराए बिना इस पर कई तरीकों को कॉल करने की अनुमति देता है l1.और यह बनाई गई सूची उदाहरण है जिसे सौंपा गया है l1, कि श्रृंखला में अंतिम विधि का रिटर्न मान ( addAll(...))। क्या इससे आपके सवाल का जवाब मिलता है?
गुंटर ज़ोचौएर

1
पूर्ण रूप से! मुझे पता newहै कि डार्ट 2.0 के साथ वैकल्पिक शुरुआत है, मैं सिर्फ newउपरोक्त संदर्भ में उलझन में हूं और आपकी व्याख्या के लिए धन्यवाद।
CopsOnRoad 13

1
..add(6)जैसा है l1.add(6), .add(6)जैसा है l1.add(5).add(6)add(5)रिटर्न voidऔर आप add()पर कॉल नहीं कर सकते हैंvoid
गुंटर Zöchbauer

2
इस दस्तावेज़ का पालन करें: - dartlang.org/guides/language/language-tour#cascade-notation- सख्ती से बोलना, कैस्केड के लिए "डबल डॉट" नोटेशन एक ऑपरेटर नहीं है। यह डार्ट सिंटैक्स का सिर्फ एक हिस्सा है।
श्री स्पेशल

17

Cascades (..) आपको एक ही ऑब्जेक्ट पर संचालन का एक क्रम बनाने की अनुमति देता है। विवरण के लिए डॉक्टर को पढ़ें

querySelector('#confirm') // Get an object.
  ..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

पिछला उदाहरण इसके बराबर है:

var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));

1
इस उदाहरण के लिए धन्यवाद! किसी भी विचार का ..onClickअनुवाद क्यों नहीं होता है button.classes.onClick?
बुके वेरस्टीघ

1

..डार्ट में कैस्केडिंग ऑपरेटर के रूप में जाना जाता है ।

यह आपको एक से अधिक परवर्ती ऑपरेशन का उपयोग करने की अनुमति देता है:

उदाहरण:

banerad..load()..show().

List coursename;
coursename..add("java")..add("flutter" )..add("dart");

यहाँ एक और उदाहरण है

यहाँ एक और उदाहरण है

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