खोज…
टिप्पणियों
डार्ट एक सच्ची वस्तु-उन्मुख भाषा है, इसलिए यहां तक कि फ़ंक्शन भी ऑब्जेक्ट हैं और एक प्रकार है, फ़ंक्शन। इसका मतलब है कि कार्यों को चर के लिए सौंपा जा सकता है या अन्य कार्यों के तर्क के रूप में पारित किया जा सकता है। आप डार्ट क्लास का एक उदाहरण भी कह सकते हैं जैसे कि यह एक फ़ंक्शन था।
नामित मापदंडों के साथ कार्य
किसी फ़ंक्शन को परिभाषित करते समय, नामित मापदंडों को निर्दिष्ट करने के लिए {param1, param2,…} का उपयोग करें:
void enableFlags({bool bold, bool hidden}) {
// ...
}
किसी फ़ंक्शन को कॉल करते समय, आप पैरानाम का उपयोग करके नामित पैरामीटर निर्दिष्ट कर सकते हैं: मान
enableFlags(bold: true, hidden: false);
फंक्शन स्कूपिंग
डार्ट फ़ंक्शंस को गुमनाम या नेस्टेड भी घोषित किया जा सकता है। उदाहरण के लिए, नेस्टेड फ़ंक्शन बनाने के लिए, किसी मौजूदा फ़ंक्शन ब्लॉक के भीतर एक नया फ़ंक्शन ब्लॉक खोलें
void outerFunction() {
bool innerFunction() {
/// Does stuff
}
}
फ़ंक्शन innerFunction अब अंदर, और केवल outerFunction , outerFunction उपयोग किया जा सकता है। किसी भी अन्य कार्यों में इसकी पहुँच नहीं है।
डार्ट में कार्यों को गुमनाम रूप से भी घोषित किया जा सकता है, जिसे आमतौर पर फ़ंक्शन तर्कों के रूप में उपयोग किया जाता है। एक सामान्य उदाहरण List ऑब्जेक्ट की sort विधि है। यह विधि निम्नलिखित हस्ताक्षर के साथ एक वैकल्पिक तर्क लेती है:
int compare(E a, E b)
प्रलेखन में कहा गया है कि a और b बराबर होने पर फ़ंक्शन को 0 वापस करना होगा। यह -1 लौटाता है अगर a < b और 1 अगर a > b
यह जानकर, हम एक अनाम फ़ंक्शन का उपयोग करके पूर्णांकों की सूची को सॉर्ट कर सकते हैं।
List<int> numbers = [4,1,3,5,7];
numbers.sort((int a, int b) {
if(a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
});
बेनामी फ़ंक्शन भी पहचानकर्ताओं के लिए बाध्य हो सकता है:
Function intSorter = (int a, int b) {
if(a == b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
}
और एक साधारण चर के रूप में उपयोग किया जाता है।
numbers.sort(intSorter);