निम्नलिखित नमूना कार्यक्रम में, क्या कोई तरीका है कि मैं map2
को परिभाषित करने से बच सकता हूं?क्या दो विकल्प "गठबंधन" करने के लिए कोई भी बनाया गया है?
fn map2<T, U, V, F: Fn(T, U) -> V>(f: F, a: Option<T>, b: Option<U>) -> Option<V> {
match a {
Some(x) => match b {
Some(y) => Some(f(x, y)),
None => None,
},
None => None,
}
}
fn main() {
let a = Some(5);
let b = Some(10);
let f = |a, b| {
a + b
};
let res = map2(f, a, b);
println!("{:?}", res);
// prints Some(15)
}
लोगों के लिए जो भी हास्केल बात करते हैं, मैं इस सवाल के रूप में भी phrased जा सकता है लगता है कि "वहाँ किसी भी उपकरण हम बजाय जंग में liftM2 का उपयोग कर सकते है?"
धन्यवाद, कि वास्तव में के लिए जब आप केवल जरूरत है एक बहुत अच्छा समाधान है इसे एक या दो बार करने के लिए। हालांकि, कुछ मामलों में फ़ंक्शन को परिभाषित करने के लिए शायद इसके लायक है। –