From 7bd4c6a5b331197df33941ab83656f3e0a720f6c Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Wed, 11 Sep 2024 15:12:00 -0400 Subject: Placeholder docs for optionals --- docs/optionals.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 docs/optionals.md (limited to 'docs') diff --git a/docs/optionals.md b/docs/optionals.md new file mode 100644 index 00000000..445a9681 --- /dev/null +++ b/docs/optionals.md @@ -0,0 +1,30 @@ +# Optional Values + +A very common use case is values that may or may not be present. You could +represent this case using enums like so: + +```tomo +enum MaybeInt(AnInt(x:Int), NoInt) + +func maybe_takes_int(maybe_x:MaybeInt): + when maybe_x is AnInt(x): + say("Got an int: $x") + else: + say("Got nothing") +``` + +However, it's overly onerous to have to define a separate type for each +situation where you might want to not have a value. Instead, Tomo has +built-in support for optional types: + +``` +func maybe_takes_int(x:Int?): + if x: + say("Got an int: $x") + else: + say("Got nothing") +``` + +This establishes a common language for talking about optional values without +having to use a more generalized form of `enum` which may have different naming +conventions and which would generate a lot of unnecessary code. -- cgit v1.2.3