From bd6314de8bb113e2a317230f5e0fb6200c39a2e9 Mon Sep 17 00:00:00 2001 From: kaizhangNV <149626564+kaizhangNV@users.noreply.github.com> Date: Mon, 15 Jul 2024 22:31:23 -0500 Subject: Move if_let syntax to convenience-features section (#4628) * Move if_let syntax to convenience-features section * Fix the syntax for setting up an anchor * update the comment on sample code * Add example for if_let syntax * Address the comments --- docs/user-guide/03-convenience-features.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'docs/user-guide/03-convenience-features.md') diff --git a/docs/user-guide/03-convenience-features.md b/docs/user-guide/03-convenience-features.md index f4cd51b3f..dc1723ebe 100644 --- a/docs/user-guide/03-convenience-features.md +++ b/docs/user-guide/03-convenience-features.md @@ -383,6 +383,23 @@ int caller() } ``` +## `if_let` syntax +Slang supports `if (let name = expr)` syntax to simplify the code when working with `Optional` value. The syntax is similar to Rust's +`if let` syntax, the value expression must be an `Optional` type, for example: + +```csharp +Optional getOptInt() { ... } + +void test() +{ + if (let x = getOptInt()) + { + // if we are here, `getOptInt` returns a value `int`. + // and `x` represents the `int` value. + } +} +``` + ## `reinterpret` operation Sometimes it is useful to reinterpret the bits of one type as another type, for example: -- cgit v1.2.3