2011-11-28 10 views
9

मैं "व्यावहारिक प्रोग्रामिंग Erlang" जहाँ एक समारोह इस तरह परिभाषित किया गया है के माध्यम से जा रहा हूँ:एरलांग: कौन सा पैटर्न मिलान अधिक कुशल (सूचियां) है?

split("\r\n\r\n" ++ T, L) -> {reverse(L), T}; 
split([H|T], L) -> split(T, [H|L]); 
split([], _) -> more. 

क्या अच्छा लगता है मुझे पहला मैच है, अर्थात् "\r\n\r\n" ++ T - वहाँ इस तरह के एक पैटर्न और इसी तरह की एक के बीच प्रदर्शन अंतर है, कि मैं इसके साथ आया: [13,10,13,10|T]? या वे बराबर हैं?

मुझे पता है कि यह बहुत आसान सवाल है और मैं इसे (शायद) खुद को देख सकता हूं, लेकिन यदि कोई अंतर है, तो मैं जानना चाहता हूं कि ऐसा क्यों है।

धन्यवाद!

उत्तर

8

"\r\n\r\n" ++ T[13,10,13,10|T] के लिए सिंटैक्स चीनी है। यह वही करना चाहिए। यदि कुछ गड़बड़ नहीं है ;-)

+0

मैंने सोचा कि शायद 'एल 1 ++ एल 2' किसी भी तरह से अलग है, क्योंकि मुझे इसे इस्तेमाल करने पर' cons'es 'में बदलने का कोई तरीका नहीं मिला: 'T ++ "\ r \ n" '- लेकिन आपके उत्तर के लिए धन्यवाद मैंने फिर सोचा और मुझे एहसास हुआ कि यह संभव है, हालांकि कुछ हद तक लंबा है। धन्यवाद! – cji

+0

'टी ++" \ r \ n "' को विपक्ष में परिवर्तित नहीं किया जा सकता है इसलिए पैटर्न मिलान में उपयोग नहीं किया जा सकता है। –

संबंधित मुद्दे