कुछ दिन पहले मैं जावा में इस कोड के बारे में अपने सहयोगियों के साथ बात कर रहा था:सिंटेक्स के लिए लूप
for(; ;) { }
यहां कुछ भी विशेष, बस एक अनंत लूप।
लेकिन हमें आश्चर्य है कि यह वाक्य रचनात्मक रूप से सही क्यों है। आप JLS §14.14.1 को एक बार देख ले, तो आप इस देखेंगे:
for ([ForInit] ; [Expression] ; [ForUpdate]) Statement
मैं समझता हूँ कि ForInit
और ForUpdate
छोड़ा जा सकता है। लेकिन कम से कम मैं उम्मीद करेंगे कि Expression
अनिवार्य है, जबकि पाश में की तरह:
while() {} // compile error, Expression is missed
तो क्यों अभिव्यक्ति एक के लिए लूप पर छोड़ा जा सकता है? और यहां तक कि एक और सोचता है - क्यों मिस्ड अभिव्यक्ति true
को हल किया गया है? मेरी उम्मीद यह होगी कि खाली अभिव्यक्ति false
पर हल हो गई है।
वही सोच अन्य भाषाओं के लिए मान्य है (मैंने इसे सी और जावास्क्रिप्ट के साथ आजमाया है, लेकिन मेरा मानना है कि फॉर-लूप के साथ हर भाषा इस तरह से व्यवहार करती है)।
फॉर-लूप में एक अभिव्यक्ति खंड अनिवार्य क्यों नहीं है (लेकिन जबकि-लूप में)? खाली अभिव्यक्ति true
को हल क्यों करती है और false
पर नहीं?
यदि आप इस बारे में चिंतित हैं तो आपके हाथों पर बहुत अधिक समय है :) – tokamak
इंटरस्टेली, दोनों के लिए '; (;)' और 'जबकि (सत्य) 'एई केवल एक' गोटो 0 'निर्देश के साथ प्रतिस्थापित किया गया है: पी – TheLostMind
@ टोकामाक ने मेरा दिन बनाया: डी – osanger