हे: शेवटची पंक्ती: कारण आजची व्यायामाची पोस्ट रिपीटर्ससाठी आहे.

मध्ये: iterator2.rs, मला कळले की ए char.to_uppercase() परत येत नाही String पण समर्पित ToUpperCase प्रकार कारण असे आहे की काही भाषांमध्ये लोअरकेसपासून अपरकेस पर्यंत साधे मॅपिंग नसते, दिवस, जर्मन ß,

यांना: join("") जेव्हा आपल्याला श्रेणीमध्ये अतिरिक्त वस्तू गोळा करण्याची आवश्यकता असते तेव्हा कार्य करा. संबंधित प्रकार: std::slice::Join“मला कनेक्शन सापडले नाही Vec<> आणि join()

मी सुरुवात केली iterator3.rs सह: list_of_results() कारण ते (बरेच) सोपे आहे. division_results प्रकार आहे: Map<IntoIter<i32>, fn(i32) → ?>, x प्रकार असावा: <Vec<Result<i32, DivisionError>>>“याचा अर्थ आम्हाला फक्त त्याची गरज आहे.” collect() ते Iterator: ते नेतृत्व करेल map() बंद करणे: झाले.

result_with_list() आवश्यक आहे a <Result<Vec<i32>, DivisionError>>, मला जावे लागले कागदपत्रे: शोधण्यासाठी collect() एक फंक्शन जे स्पष्टपणे पुनरावृत्तीमध्ये वापरले जाते Result, आधीच्या फंक्शन प्रमाणे आधी जोडण्याची कल्पना आहे, नंतर ती दुप्पट करा Result, և शेवटी पुन्हा डायल करा ().

कागदपत्रांमध्ये नमूद केल्याप्रमाणे, आपण संकलक मदत करणे आवश्यक आहे collect() कारण, सर्वसाधारणपणे, तो प्रजातींचा योग्य निष्कर्ष काढू शकत नाही.

कारण: collect() इतके सामान्य की ते प्रकार निष्कर्षासह समस्या निर्माण करू शकते. जसे, collect() हे काही प्रकरणांपैकी एक आहे जेथे तुम्हाला वाक्यरचना दिसेल ज्याला प्रेमाने “टर्बोफिश” म्हणून ओळखले जाते. ::<>हे अनुमान अल्गोरिदम आपण कोणता संग्रह गोळा करण्याचा प्रयत्न करीत आहात हे समजण्यास मदत करते.

उपाय iterators4.rs उलट करणे सोपे. डोमेनवर संकलक इशारे. “खरं तर, ते तुलनेने सोपे आहेत” fold() कार्य: नंतरचे फंक्शनल प्रोग्रामिंगमध्ये सामान्य आहे.

हेच ते. पुढच्या पोस्टमध्ये मी बाकीचे व्यायाम सोडवताना घेतलेल्या नोट्स सादर करेन.