for में yield
In this page:
val result = for (item <- collection) yield expression
val filtered = for (item <- collection if condition) yield expression
yield in for
किसी for comprehension में yield जोड़ना, for (x <- collection) yield transform(x), हर element को transform करता है और सिर्फ side effects चलाने के बजाय results को source जैसे ही type की एक नई collection में इकट्ठा करता है।
यह functionally .map को call करने के बराबर है (और filters/कई generators के साथ, लगभग .flatMap/.filter के बराबर), लेकिन complex, multi-generator logic के लिए अक्सर ज़्यादा साफ़ पढ़ा जाता है। परिणामी collection का type उस type से मेल खाता है जिस पर iterate किया जा रहा है।
for (x <- xs) yield f(x) एक syntactic sugar है जिसे compiler map/flatMap/filter calls की एक chain में translate करता है।उदाहरण: yield in for
object Main extends App {
val numbers = 1 to 5
val squares = for (n <- numbers) yield n * n
println(squares)
val evens = for (n <- numbers if n % 2 == 0) yield n
println(evens)
}
Login to try C/C++/Java/PHP code in the editor
yieldके बिनाforका उपयोग करना और नई collection की उम्मीद करना, जबकि यहUnitreturn करता है और सिर्फ body चलाता है।yieldexpression मेंprintlnजैसे side effects डालना, जबकिyieldएक value produce करने के लिए है।- किसी
Rangeपरyieldका उपयोग करना और result कोListके बजायVectorपाकर हैरान होना, क्योंकि result type source collection का अनुसरण करता है।
if/else,while,do-while, औरforloops program flow को control करते हैं।forcomprehensions औरyieldloops से results बनाते हैं।- किसी loop से बाहर निकलने के लिए
scala.util.control.Breaksका उपयोग होता है।
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: