में फ्लैटमैप घोषणा को समझना मैंने अभी List.flatMap
घोषणा को देखा और इससे आश्चर्यचकित हुआ।सूची
final override def flatMap[B, That](f: A => GenTraversableOnce[B])
(implicit bf: CanBuildFrom[List[A], B, That]): That
कहाँ object List
परिभाषित करता है:
implicit def canBuildFrom[A]: CanBuildFrom[Coll, A, List[A]] =
ReusableCBF.asInstanceOf[GenericCanBuildFrom[A]]
तो, अगर हम एक List
पर flatMap
आह्वान हम List
मिल जाएगा और मैं That
प्रकार में किसी भी बिंदु नहीं दिख रहा है, तो यह हमेशा के लिए निष्कर्ष निकाला की जाएगी List[B]
(implicit
की वजह से)।
कि 'implicit' एक और अधिक स्थानीय एक, के लिए बनाता है कि साथ अधिरोहित जा सकता, मान लें, एक' Vector', या स्पष्ट रूप से एक पैरामीटर – Chirlo
http देखें के रूप में पारित: // stackoverflow .com/a/1728140/5344058 जब यह मूल संग्रह –
की तुलना में एक अलग प्रकार होने के लिए उपयोगी है, तो क्या आपने कभी फ्लैटमैप या मानचित्र के साथ 'collection.breakout' देखा है ... यह एक है इस निहित ओवरराइड करने का उदाहरण। –