2010-05-29 8 views
8

Programming Scala के अध्याय 3 में, लेखक लूप/समझ के लिए दो उदाहरण देता है, लेकिन() और {} के उपयोग के बीच स्विच करता है। यह मामला क्यों है, क्योंकि ये स्वाभाविक रूप से दिखते हैं कि वे एक ही काम कर रहे हैं? क्या कोई कारण breed <- dogBreeds दूसरी पंक्ति पर है उदाहरण # 2?स्कैला के लिए लूप (समझ के लिए) पर स्कोप को समझना

// #1()'s 
for (breed <- dogBreeds 
    if breed.contains("Terrier"); 
    if !breed.startsWith("Yorkshire") 
) println(breed) 

// #2 {}'s 
for { 
    breed <- dogBreeds 
    upcasedBreed = breed.toUpperCase() 
} println(upcasedBreed) 

उत्तर

8

आप हरी टिप पढ़ें:

भाव के लिए कोष्टक या घुंघराले ब्रेसिज़ के साथ परिभाषित किया जा सकता है, लेकिन घुंघराले ब्रेसिज़ का उपयोग कर मतलब है कि आप की जरूरत नहीं है अर्धविराम से अपने फिल्टर को अलग । अधिकांश समय, आप जब आप एक से अधिक एक फिल्टर, असाइनमेंट, आदि

समझ के लिए () and {} साथ

तो है घुंघराले ब्रेसिज़ का उपयोग करना पसंद करेंगे ही केवल एक चीज हैं कि परिवर्तन के लिए इस्तेमाल किया विभाजक है : () के लिए आपको semicolon ";" को विभाजक के रूप में और {} के लिए उपयोग करना होगा, आप new line का उपयोग करते हैं।

+12

स्कैला की डब्ल्यूटीएफ सुविधाओं में से एक और। एक महान भाषा, लेकिन चीनी से भरी हुई है जो न केवल अनावश्यक है, बल्कि तर्कसंगत रूप से हानिकारक है। – andyczerwonka

+1

सेमीकॉलन अनुमान मुफ्त में नहीं आता है। दूसरी बार यह काटने 'वैल ए = 1 + 2 + 3 + 4' है। इसे 'वैल ए = 1। + (2)। + (3) के रूप में पार्स किया गया है; 4.unary _ +() ' – retronym

+0

ध्यान दें कि पहला उदाहरण संकलित नहीं करता है। – retronym

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