संकलन त्रुटियों को समझना

संकलन त्रुटियों को समझना

> लीकस्क्रिप्ट ट्यूटोरियल

आप अपने एआई को एक धन्य की तरह कोड करते हैं। लाइनें स्क्रॉल करती हैं, और बहुत तार्किक चर और कार्यों के नाम, जैसे sfatyu_2 एक दूसरे का अनुसरण करते हैं, जीवन अच्छा है ... अचानक ! "सेव" कुंजी दबाई जाती है और आपका कोड कंपाइलर द्वारा चेक किया जाता है। यह आपके टकटकी का समर्थन करता है, तीव्रता से ... और यहाँ नाटक है! आपके संपादक के नीचे एक (या अधिक!) बड़ी लाल रेखाएँ दिखाई देती हैं, इन अजीब और गूढ़ जादुई सूत्रों का क्या अर्थ हो सकता है?

यह मार्गदर्शक आपके सामने सत्य प्रकट करेगा ताकि आप भी ज्ञाता बन सकें।

वक्तव्य का अंत यहीं अपेक्षित था

अनुदेश का अंत? हाँ, यह प्रत्येक पंक्ति के अंत में ";" है। यह संदेश उस रेखा को इंगित करता है जहां इनमें से एक संख्या गायब है। हालांकि सावधान रहें! इंगित की गई रेखा सामान्य रूप से उस रेखा से पहले या बाद की रेखा होती है जिसे आरोपित किया गया है।

!एक लापता;

यहाँ पंक्ति 18 के अंत में एक ";" गायब है, और संदेश हमें बताता है कि useWeapon से पहले की पंक्ति में अर्धविराम नहीं है!

ठीक करें: आगे बढ़ें (दुश्मन);

फ़ाइल का अनपेक्षित अंत

अधिक कपटी! यह पिछली त्रुटि के समान ही है, लेकिन इस बार यह आपके AI की अंतिम पंक्ति है जिसमें अर्धविराम नहीं है। !अनएक्सप ईओएफ

ठीक करें: 'हथियार (दुश्मन) का उपयोग करें;'

यह एक खुले स्ट्रिंग के कारण भी हो सकता है: !ईओएफ 2

ठीक करें: कहो ("मैं जीत गया!");

अज्ञात चर या कार्य

कौन अपना चर घोषित करना भूल गया? वेरिएबल्स पर ट्यूटोरियल और फ़ंक्शन पर ट्यूटोरियल की संक्षिप्त वापसी उपयोगी साबित हो सकती है।

!var या func अनजान

यहाँ, दुश्मन चर घोषित नहीं किया गया है। आपको पहले इसे var कीवर्ड से बनाना होगा। फिक्स: 'वर दुश्मन = getNearestEnemy ();'

और इसके लिए तो? !पूर्व अज्ञात func

वैसे लेखक कीबोर्ड के साथ सिर्फ एक बंदर है, और यह नहीं देखा कि उसने ऊपर घोषित 'getNearest' के बजाय 'getNeerest' (जो अस्तित्व में नहीं है) का इस्तेमाल किया।

यह वेरिएबल नाम अनुपलब्ध है

आप पहले से घोषित चर के समान नाम वाले चर को फिर से घोषित नहीं कर सकते।

![](https://imgur.com/Qx5n006.png)

सुधार (बदसूरत): var moi2 = 1 उन नामों का उपयोग करना बेहतर होगा जो वास्तव में आपके चर की भूमिका से मेल खाते हैं।

चेतावनी: यह त्रुटि वैश्विक चर के नाम के कारण भी दिखाई दे सकती है।

यदि आप श्रद्धेय अर्धविराम के बजाय अल्पविराम का उपयोग करते हैं तो यह त्रुटि आप पर भी पड़ेगी: ![](https://imgur.com/cCpqtxS.png)

फिक्स: 'वर दुश्मन = getNearestEnemy ();'

यह इनलाइन चर घोषणा के कारण है: var चर 1 = 1, चर 2 = 2; पूरी तरह से मान्य सिंटैक्स है (देखें चर)।

यह फ़ंक्शन नाम अनुपलब्ध है

पिछली त्रुटि की तरह, आप पहले से उपयोग किए जा चुके फ़ंक्शन नाम का पुन: उपयोग नहीं कर सकते हैं।

![](https://imgur.com/UUfrixR.png)

सुधार (बहुत बदसूरत): 'फंक्शन getNearest2() {`

इस पैरामीटर नाम का उपयोग नहीं कर सकता

तो हम वैश्विक चर के नाम को पैरामीटर नाम के रूप में उपयोग करने की कोशिश कर रहे हैं, हुह? क्या आप जानते हैं कि अगर आप मेरे कम मित्रवत सहयोगियों में से एक के साथ बाहर हो गए तो आपको इसकी क्या कीमत चुकानी पड़ सकती है?

![](https://imgur.com/xnAOUAV.png)

सुधार :

समापन कोष्ठक अपेक्षित है

जैसा कि त्रुटि संदेश इंगित करता है, संकेतित रेखा में कोष्ठक गुम है। !गलत अगर

यहां कोड की लाइन 19 if (नहीं isAlive (दुश्मन)) { होना चाहिए

यहां एक मूल्य अपेक्षित था

एक फंक्शन कॉल बंद नहीं हुआ ?? यहाँ आपको क्या मिलता है! !अपेक्षित मूल्य

'मूव टूवार्ड (दुश्मन);' को ठीक करें

मापदंडों की गलत संख्या

पैरामीटर्स? केजाको? फ़ंक्शन ट्यूटोरियल की एक त्वरित समीक्षा क्रम में है!

!नायब गलत परम

यहां, moveToward फ़ंक्शन 1 से 2 पैरामीटर स्वीकार करता है, और हम इसे 0 देते हैं। जाहिर है कि कंपाइलर हमारी उंगलियों को हिट करता है। 'moveToward (दुश्मन);' या 'moveToward (दुश्मन, mp);' को mp के साथ ठीक करें।

ध्यान दें कि यदि आप किसी फ़ंक्शन (Eg: moveToward(दुश्मन, mp, चीज़);) को बहुत सारे पैरामीटर देते हैं, तो आपको वही त्रुटि मिलेगी।

सभी ब्लॉक बंद नहीं किए गए हैं

ब्लॉक क्या है? यह कोड का एक भाग है जो {} से घिरा हुआ है। यहां, हमने बिना बंद किए { के साथ एक ब्लॉक खोला। !ब्लॉक बंद नहीं हुए

यहाँ if के अंत के बाद } गायब है। कंपाइलर इसलिए वर्तमान ब्लॉक के अंत को इंगित करता है (यहां फ़ाइल का अंत) यह इंगित करने के लिए कि हम सभी ब्लॉकों को बंद करना भूल गए हैं। सुधार :

बंद करने के लिए कोई ब्लॉक नहीं

यह स्थिति पिछले वाले के विपरीत है। हमने एक ब्लॉक ए.वी. बंद कर दिया