if let का Syntax
if let किसी value के सिर्फ एक interesting case को handle करने के लिए एक shortcut है, हर possibility लिखे बिना।if let Pattern(binding) = value {
// body
} else {
// no match
}
Basic if let
if let एक value की तुलना एक single pattern से करता है और इसका block सिर्फ तब चलाता है जब वह pattern match करे, अन्यथा block को पूरी तरह skip करते हुए। यह एक match का shorthand है जो सिर्फ एक case की परवाह करता है।
उदाहरण: Basic if let
// Entry point: execution of the program starts here
fn main() {
// Declare an immutable variable `config_max` (a `Option<u8>`), set to `Some(3)`
let config_max: Option<u8> = Some(3);
// If `config_max` matches `Some(max)`, bind and run this block
if let Some(max) = config_max {
// Print "Maximum is configured to be {}" to the console, substituting in `max` (with a trailing newline)
println!("Maximum is configured to be {}", max);
}
}
Login to try C/C++/Java/PHP code in the editor
if let With else
if let में एक else block जोड़ना आपको non-matching case भी handle करने देता है, जब सिर्फ एक interesting variant हो तो match से कम boilerplate के साथ पूरी coverage देते हुए।
उदाहरण: if let With else
// Entry point: execution of the program starts here
fn main() {
// Declare an immutable variable `value` (a `Option<i32>`), set to `None`
let value: Option<i32> = None;
// If `value` matches `Some(v)`, bind and run this block
if let Some(v) = value {
// Print "Got value: {}" to the console, substituting in `v` (with a trailing newline)
println!("Got value: {}", v);
// Otherwise, run this branch
} else {
// Print "No value present" to the console (with a trailing newline)
println!("No value present");
}
}
Login to try C/C++/Java/PHP code in the editor
if let With an Enum
if let किसी भी enum के साथ काम करता है, सिर्फ Option के साथ नहीं, आपको बाकी को नज़रअंदाज़ करते हुए interest के एक single variant को concisely handle करने देते हुए।
उदाहरण: if let With an Enum
// Define an enum `Shape` listing its possible variants
enum Shape {
Circle(f64),
Square(f64),
}
// Entry point: execution of the program starts here
fn main() {
// Declare an immutable variable `shape`, set to `Shape::Circle(3.0)`
let shape = Shape::Circle(3.0);
// If `shape` matches `Shape::Circle(radius)`, bind and run this block
if let Shape::Circle(radius) = shape {
// Print "Circle with radius {}" to the console, substituting in `radius` (with a trailing newline)
println!("Circle with radius {}", radius);
}
}
Login to try C/C++/Java/PHP code in the editor
Choosing if let vs match
if let तब सबसे अच्छा है जब आप सिर्फ एक specific pattern की परवाह करें और बाकी सब concisely नज़रअंदाज़ करना चाहें; match तब बेहतर है जब आपको हर possible case explicitly handle करना हो।
उदाहरण: Choosing if let vs match
// Entry point: execution of the program starts here
fn main() {
// Declare an immutable variable `items`, set to `[Some(1), None, Some(3)]`
let items = [Some(1), None, Some(3)];
// Loop over `items.iter()`, binding each item to `item`
for item in items.iter() {
// If `item` matches `Some(n)`, bind and run this block
if let Some(n) = item {
// Print "Found: {}" to the console, substituting in `n` (with a trailing newline)
println!("Found: {}", n);
}
}
}
Login to try C/C++/Java/PHP code in the editor
- एक wildcard
_ => {}arm के साथ एक पूराmatchउपयोग करना जब एक कहीं छोटाif letवही logic express कर देता। - यह भूल जाना कि
if letdesign से non-exhaustive है -- यह जानबूझकर हर उस case को नज़रअंदाज़ करता है जो दिए pattern से match नहीं करता। - यह न समझना कि
if let ... elsenon-matching case भी handle कर सकता है, concise syntax को पूरी coverage के साथ combine करते हुए।
if let pattern = value { ... }block सिर्फ तब चलाता है जबvalueदिए pattern से match हो।if letतब उपयोगी है जब किसीmatchका सिर्फ एक variant असल में मायने रखता हो, बाकी के लिए boilerplate avoid करते हुए।if letसे एकelsebranch attach किया जा सकता है ताकि बाकी हर case को एक जगह handle किया जाए।matchके विपरीत,if letको exhaustive होने की ज़रूरत नहीं।
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: