4 ms·
As danohuiginn clarified, the reason I'm adding the checks is because assuming there's such a key as 'breed' in the json_pet dictionary can (and will!) lead to
by dguaraglia 6y ago
As danohuiginn clarified, the reason I'm adding the checks is because assuming there's such a key as 'breed' in the json_pet dictionary can (and will!) lead to KeyError exceptions.
- wraptile 6y agoSeems like an issue of data flow then. You usually don't work with dynamic random content and sanitize/clean up your data before working with it.
- dguaraglia 6y agoEven if you were using pre-processed data, pattern matching helps to make the code easier to read. I guess I can think of clearer examples in other languages, like Rust, that supported tagged unions: // Given this enum enum NumOrStr { Num(i32), Str(string) } // That allows you to define values like this let x = NumOrStr::Num(10); let y = NumOrStr::Str("hello"); // And some random code that produces a value z that is of type NumOrStr let z: NumOrStr = ... match z { Num(50) => println!("Got my favorite number: fifty!"), Num(n) => println!('Got {}', n), String("hello") => say_hello(), String(s) => do_something_with_string(s) _ => println!("Default case, x = {:?}", x), }