पर्ल 6 में समानता ऑपरेटरों का विस्फोट होता है। =:=
क्या है? leg
और cmp
के बीच क्या अंतर है? या eqv
और ===
?सभी अलग-अलग पर्ल 6 समानता ऑपरेटरों के साथ क्या सौदा है? (==, ===, eq, eqv, ~~, =: =, ...)
क्या किसी के पास कोई अच्छा सारांश है?
पर्ल 6 में समानता ऑपरेटरों का विस्फोट होता है। =:=
क्या है? leg
और cmp
के बीच क्या अंतर है? या eqv
और ===
?सभी अलग-अलग पर्ल 6 समानता ऑपरेटरों के साथ क्या सौदा है? (==, ===, eq, eqv, ~~, =: =, ...)
क्या किसी के पास कोई अच्छा सारांश है?
=:= परीक्षण करता है, तो दो कंटेनर (चर या सरणियों या हैश के आइटम) aliased हैं, यानी साथ ही अगर एक परिवर्तन, अन्य परिवर्तन करता है?
my $x;
my @a = 1, 2, 3;
# $x =:= @a[0] is false
$x := @a[0];
# now $x == 1, and $x =:= @a[0] is true
$x = 4;
# now @a is 4, 2, 3
दूसरों के लिए के रूप में: === परीक्षण करता है, तो दो संदर्भों एक ही वस्तु को इंगित, और अगर दो बातें eqv परीक्षण संरचना की दृष्टि से बराबर हैं। तो [1, 2, 3] === [1, 2, 3]
गलत होगा (एक ही सरणी नहीं), लेकिन [1, 2, 3] eqv [1, 2, 3]
सत्य (समान संरचना) होगी।
leg
पर्ल 5 के cmp
तरह तार तुलना, जबकि पर्ल 6 के cmp
होशियार है और leg
तरह <=>
की तरह नंबर और तार की तुलना करेंगे।
13 leg 4 # -1, because 1 is smaller than 4, and leg converts to string
13 cmp 4 # +1, because both are numbers, so use numeric comparison.
अंत में ~~
"स्मार्ट मैच", यह सवाल का जवाब "$x
मैच $y
करता है।" यदि $y
एक प्रकार है, तो यह प्रकार की जांच है। यदि $y
एक रेगेक्स है, तो यह रेगेक्स मैच है - और इसी तरह।
पर्ल 5 में 'eqv' नहीं है। मुझे लगता है कि आप वहां 'cmp' मतलब था। – cjm
reddit से आज:
धन्यवाद, लेकिन मुझे अभी भी समझ में नहीं आता कि = = = करता है। और पैर और सीएमपी के बीच क्या अंतर है? – raldi
जहां तक मुझे पता है, =: = केवल तभी मायने रखता है जब आपने उपनाम असाइन किया है। http://perlgeek.de/blog-en/perl-5-to-6/ cmp के अनुसार अब नाम बदल दिया गया है, इसलिए वे वही होना चाहिए। – Randy
वही नहीं हैं (और मुझे उम्मीद है कि मैंने उस ब्लॉग पर ऐसा नहीं कहा था), सीएमपी पैर की तुलना में "चालाक" है। – moritz
क्या Synopsis 3: Comparison semantics में सारांश जो आप चाहते हैं, या आप इसे पहले ही पढ़ रहे थे? डिज़ाइन दस्तावेज़ परीक्षण फ़ाइलों से लिंक करते हैं जहां उन सुविधाओं का उपयोग किया जाता है, ताकि आप उनके उपयोग और उनके वर्तमान परीक्षण स्थिति के उदाहरण देख सकें।
पर्ल 6 की तुलना ऑपरेटर गतिशील भाषा और सभी चीजों पर जाने के लिए अधिक उपयुक्त हैं। तारों या संख्याओं की तुलना करने के बजाय (या चीजों को तारों या संख्याओं में बदलना) के बजाय, अब आप एक ऑपरेटर के साथ चीजों का परीक्षण कर सकते हैं जो आप चाहते हैं। आप मूल्य, कंटेनर, प्रकार, आदि का परीक्षण कर सकते हैं।
टिप्पणियों में से एक में, आप eqv
और cmp
के बारे में पूछते हैं। पर्ल 5 के पुराने दिनों में, cmp
सॉर्टिंग के लिए वहां था और तीन जादू मानों (-1,0,1) में से एक लौटाता था, और यह हमेशा स्ट्रिंग अर्थशास्त्र के साथ करता था। पर्ल 6 में, cmp
तीन प्रकार के Order
ऑब्जेक्ट्स में से एक लौटाता है, इसलिए आपको याद रखना नहीं है कि -1, 0, या 1 का मतलब क्या है। साथ ही, नया cmp
स्ट्रिंग सेमेटिक्स को मजबूर नहीं करता है, इसलिए जब संख्याएं सौंपी जाती हैं तो यह बेहतर हो सकती है (पर्ल 5 के विपरीत जो 1, 10, 11, 2, 20, 21 ... जैसे क्रमबद्ध होगा)।
leg
(से एल ईएसएस, ई qual, जी से reater) स्ट्रिंग अर्थ विज्ञान के साथ cmp
है। इसे पर्ल 6 के ~$a cmp ~$b
के रूप में परिभाषित किया गया है, जहां ~
नया "स्ट्रिंग संदर्भकर्ता" है जो स्ट्रिंग अर्थशास्त्र को मजबूर करता है। leg
के साथ, आप हमेशा पुरानी पर्ल 5 cmp
की तरह स्ट्रिंग तुलना कर रहे हैं।
यदि आपके पास अभी भी अन्य ऑपरेटरों पर प्रश्न हैं, तो उन्हें अलग प्रश्नों में विभाजित करें। :)
यह भी देखें http://docs.perl6.org/ - आप वहां व्यक्तिगत ऑपरेटरों को खोज सकते हैं। – Coke
यह भी एक आसान संदर्भ गाइड है:
यह प्रिंट, जबकि प्यारा, spec के वर्तमान संस्करण के साथ अद्यतित नहीं है, पर्ल 6.c – Coke
@ कोक अच्छी तरह से, यह * 2010 में वापस लिखा गया था, लेकिन उत्तरदाता अभी भी एक सक्रिय उपयोगकर्ता है इसलिए मैं चाहता हूं कि वे इसे अद्यतन करें – cat
@tac उत्तर को 'समुदाय विकी' चिह्नित किया गया है ताकि कोई भी इसे संपादित कर सके। या, आप एक टिप्पणी में स्पष्ट कर सकते हैं कि आप किस अपडेट की उम्मीद कर रहे हैं। – Ether
आप जानते हैं कि '' ... भी एक वैध ऑपरेटर है किया? –
जटिलता का डर क्यों है? आपको सभी सुविधाओं का उपयोग करने की आवश्यकता नहीं है। जस्ट सीखो कि आपको क्या चाहिए। – Aftershock