सभी श्रृंखलाएं dchar
की सीमाओं के रूप में इलाज कर रहे हैं (प्रलेखन http://dlang.org/phobos/std_algorithm.html#joiner में इस पर कुछ भी नहीं है)। ऐसा इसलिए है क्योंकि dchar
को एक कोड बिंदु होने की गारंटी है, क्योंकि यूटीएफ -32 में, प्रत्येक कोड इकाई एक कोड बिंदु है, जबकि यूटीएफ -8 (char
) और यूटीएफ -16 (wchar
) में, प्रति कोड कोड इकाइयों की संख्या बिंदु बदलता है। इसलिए, यदि आप व्यक्तिगत char
एस या wchar
एस पर परिचालन कर रहे थे, तो आप पूरे पात्रों के बजाय पात्रों के टुकड़ों पर काम करेंगे, जो बहुत खराब होगा। यदि आप यूनिकोड के बारे में ज्यादा नहीं जानते हैं, तो मैं जोएल स्पॉस्की द्वारा this article पढ़ने की सलाह दूंगा। यह चीजों को काफी अच्छी तरह से बताता है।
किसी भी मामले में, क्योंकि अलग-अलग char
और wchar
रों पर काम मतलब नहीं है, char
और wchar
के तार, dchar
की सीमाओं (ElementType!string
dchar
है) के रूप में इलाज कर रहे हैं जिसका अर्थ है कि जहाँ तक पर्वतमाला संबंध है, उनका length
की जरूरत नहीं है (hasLength!string
false
है - walkLength
जरूरतों उनकी लंबाई प्राप्त करने के लिए प्रयोग की जाने वाली), sliceable (hasSlicing!string
false
है) नहीं हैं, और इंडेक्स करने योग्य नहीं हैं (isRandomAccess!string
false
है)। इसका यह भी अर्थ है कि किसी भी प्रकार की स्ट्रिंग से नई सीमा बनाने वाली कोई भी चीज़ dchar
की एक श्रृंखला में परिणामस्वरूप जा रही है। joiner
उनमें से एक है। ऐसे कुछ कार्य हैं जो यूनिकोड और दक्षता के लिए विशेष केस स्ट्रिंग को समझते हैं, लंबाई, टुकड़ा करने और इंडेक्सिंग का लाभ लेते हैं, लेकिन जब तक उनका परिणाम आखिरकार मूल का टुकड़ा नहीं होता है, तो वे जो भी रेंज वापस लौटाते हैं उन्हें बनाना होगा dchar
एस।
तो, front
वर्णों की किसी भी श्रेणी पर हमेशा dchar
होगा, और popFront
हमेशा एक पूर्ण कोड बिंदु पॉप आउट करेगा।
यदि आप श्रेणियों के बारे में ज्यादा नहीं जानते हैं, तो मैं this पढ़ने की सलाह दूंगा। यह डी पर एक पुस्तक में एक अध्याय है जो ऑनलाइन है और वर्तमान में हमारे पास श्रेणियों पर सबसे अच्छा ट्यूटोरियल है। हमें वास्तव में dlang.org पर श्रेणियों (जिसमें तारों के साथ काम करते हैं) पर एक उचित लेख प्राप्त करना चाहिए, लेकिन अभी तक इसे लिखने के लिए कोई भी नहीं मिला है। भले ही, आपको कम से कम एक मानक पुस्तकालय (विशेष रूप से std.algorithm) का उपयोग करने में सक्षम होने के लिए श्रेणियों की एक बुनियादी समझ रखने की आवश्यकता होगी, क्योंकि यह उन्हें बहुत भारी उपयोग करता है।
स्रोत
2012-09-05 20:20:00