मैप्स पर समझ के लिए दृश्यों के पीछे चल रहे टाइपिंग से उलझन में हूं। मैं समझता हूँ कि बाहरी संग्रह प्रकार आम तौर पर संरक्षित किया जाना माना जाता है है, और हम देखते हैं कि निम्नलिखित दो मामलों में अपेक्षित व्यवहार:स्कैला - समझ के लिए मानचित्र से Iterable तक अप्रत्याशित प्रकार स्विच?
scala> for {
| (k,v) <- Map(0->1,2->3)
| } yield k -> v
res0: scala.collection.immutable.Map[Int,Int] = Map(0 -> 1, 2 -> 3)
scala> for {
| (k,v) <- Map(0->1,2->3)
| foo = 1
| } yield k -> v
res1: scala.collection.immutable.Map[Int,Int] = Map(0 -> 1, 2 -> 3)
लेकिन जब मैं समझ के लिए अंदर एक दूसरे काम जोड़ने मैं कुछ आश्चर्य की बात मिलती है:
scala> for {
| (k,v) <- Map(0->1,2->3)
| foo = 1
| bar = 2
| } yield k -> v
res2: scala.collection.immutable.Iterable[(Int, Int)] = List((0,1), (2,3))
ऐसा क्यों हो रहा है?