foo(a => 1, b => 2)
शैली नामित तर्कों को अनुकरण करने का सामान्य तरीका है। bar({a => 1, b => 2})
आमतौर पर केवल पूरक (और संभवतः वैकल्पिक) तर्कों के लिए उपयोग किया जाता है।
सामान्य उपयोग के लिए, मैं पहला फॉर्म पसंद करता हूं। {}
अतिरिक्त टाइपिंग, पढ़ने के लिए अतिरिक्त शोर, और यदि आप या तो दोनों ब्रेसिज़ छोड़ते हैं तो एक संभावित त्रुटि बनाते हैं। कोई प्रदर्शन अंतर नगण्य है। (यदि ऐसा नहीं है, तो आपको बड़ी समस्याएं हैं।) दूसरी तरफ, अज्ञात हैश कन्स्ट्रक्टर में तर्कों को लपेटने से रनटाइम की बजाय संकलन-समय पर त्रुटियों को ढूंढने में आपकी सहायता मिल सकती है।
दूसरा रूप आमतौर पर स्थितित्मक तर्कों के साथ मिश्रित देखा जाता है। जैसेबेंचमार्क से करता है:
cmpthese(10000, {
foo => \&foo,
bar => \&bar,
});
टी {}
बाहर छोड़ देता है जबकि:
my $text = $w->Scrolled('Text', -width => 80, -height => 50);
यह आमतौर पर एक शैलीगत विकल्प है।
स्रोत
2010-07-30 13:37:14
+1। –
ये "प्रदर्शन पहलू" अनावश्यक सूक्ष्म अनुकूलन हैं जो कोई व्यावहारिक लाभ नहीं देते हैं। एक हैश को आसानी से एक सूची के रूप में उपयोग किया जा सकता है: 'foo (% हैश) 'या हैशफ:' foo (% {$ हैशफ})'। Foo शैली के साथ चिपके हुए उपयोगकर्ता को अधिक शक्ति छोड़ देता है। – jmz
दरअसल, मेरा स्वयं का बेंचमार्किंग दिखाया गया है (कई प्रतिष्ठानों पर) कि संदर्भों की तुलना में सूचियों को पार करना तेज़ है - हालांकि यह * वापसी * संदर्भों के लिए तेज़ी से दिखाई देता है। – Axeman