2015-06-21 4 views
6

मैं Learn You Some Erlang से एरलांग सीख रहा हूं और मैंने पैटर्न को [_|_] पहले से ही देखा है लेकिन उस पर कोई जानकारी नहीं मिली। यह उपयोग अनावश्यक लगता है क्योंकि इसे (1) से छोड़कर और (2) में इसे घटाने से पठनीयता को कम किए बिना एक ही परिणाम मिलता है। यह एरलांग के साथ मेरा पहला सप्ताह है इसलिए मैं पूरी तरह से गलत हो सकता हूं।क्या एरलांग में पैटर्न [_ | _] का मतलब कुछ विशिष्ट है?

(1) bestest_qsort से:

bestest_qsort(L=[_|_]) -> 
    bestest_qsort(L, []). 

(2) here से:

error:{badmatch,[_|_]} -> ok 

उत्तर

11

पैटर्न [p1 | p2] एक गैर खाली सूची, जिनके सिर पैटर्न p1 से मेल खाता है और जिसका पूंछ मैचों से मेल खाता है पैटर्न p2। इसलिए चूंकि पैटर्न _ कुछ भी मेल खाता है, [_ | _] किसी भी गैर-खाली सूची से मेल खाता है।

_ दूसरी तरफ खाली सूची सहित कुछ भी मेल खाता है।

+5

@ टोरारेट 'एफ ([2,3])' का प्रयास करें। पैटर्न '[पी]' एक सूची से मेल खाता है जिसमें एक तत्व होता है, जो 'पी' से मेल खाता है। यह एक से अधिक तत्वों के साथ सूचियों से मेल नहीं खाता है (अन्यथा, कहें, '[1,2] 'पैटर्न' [1]' से मेल खाता है, जिसका कोई अर्थ नहीं है - '[1] = [1,2] 'स्पष्ट रूप से होना चाहिए मेल नहीं करता)। – sepp2k

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