Erlang

2008-12-06 16 views
6

में अप्रयुक्त चर के बारे में चेतावनी मैंने हाल ही में एरलांग शुरू किया, और मुझे लगता है कि संकलन करते समय मुझे लगातार "चेतावनी: परिवर्तनीय एक्स अप्रयुक्त" मिलता है। उदाहरण के लिए, निम्नलिखित समारोह है, जो किसी सूची से अधिकतम तत्व पाता ले:Erlang

max([Head|Tail]) -> 
     max(Head,Tail). 

    max(Element,[Head | Tail]) when Element < Head -> 
     max(Head,Tail); 
    max(Element,[Head | Tail]) -> 
     max(Element, Tail); 
    max(Element,[]) -> 
     Element. 

संकलक मुझे चेतावनी दी है कि समारोह के 3 मामले में, प्रमुख अप्रयुक्त है। बिना सिर के फ़ंक्शन कैसे लिखा जा सकता है?

उत्तर

8

यह भ्रामक किया जा रहा बिना चेतावनी को दबाने चाहिए:

max(Element,[_Head | Tail]) -> 
    max(Element, Tail); 
6
max([Head|Tail]) -> 
     max(Head,Tail). 

    max(Element,[Head | Tail]) when Element < Head -> 
     max(Head,Tail); 
    max(Element,[_| Tail]) -> 
     max(Element, Tail); 
    max(Element,[]) -> 
     Element. 

चाल करना चाहिए। '_' के साथ 'हेड' को प्रतिस्थापित करने का कारण यह कहने के लिए वाक्यविन्यास है कि एक पैरामीटर रखा जाएगा, लेकिन मुझे इसकी आवश्यकता नहीं है।

9

आप नाम तो एक चर _ बजाय Name (जैसे _Head के बजाय) चर बाध्य नहीं होंगे, और आप एक चेतावनी नहीं मिलेगा।

आप एक चर _Name बजाय Name (Head की जैसे _Head बजाय) नाम चर बाध्य होंगे, लेकिन आप अभी भी एक चेतावनी नहीं मिल जाएगा। कोड में _ के साथ शुरू होने वाली एक चर का संदर्भ बहुत खराब अभ्यास माना जाता है।

कोड की पठनीयता में सुधार करने के लिए चर का नाम रखने की अनुशंसा की जाती है (उदाहरण के लिए यह अनुमान लगाना आसान है कि _Head केवल _ से अधिक था)।

+1

आपके पिछले दो वाक्यों एक दूसरे के साथ विरोधाभास करते हैं। –

+0

मुझे इस मामले में "उपयोग" का संदेह है कि "नाम निर्माण का उपयोग करें" के बजाय "teh मान का उपयोग करें" का अर्थ है। – Vatine

+0

"एक चर का उपयोग करके" मेरा मतलब है कोड में संदर्भित करना, और "एक चर नाम का उपयोग करना" मेरा मतलब है कि यह कुछ नामकरण कर रहा है। –