Skip to content

Commit

Permalink
Add small section about or expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
tazjin committed Nov 25, 2020
1 parent 80a23e3 commit f39b747
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion README.md
Expand Up @@ -23,7 +23,8 @@ important is missing.
- [`if ... then ... else ...`](#if--then--else-)
- [`inherit` keyword](#inherit-keyword)
- [`with` statements](#with-statements)
- [`import` / `NIX_PATH` / `<entry>`](#import--nixpath--entry)
- [`import` / `NIX_PATH` / `<entry>`](#import--nix_path--entry)
- [`or` expressions](#or-expressions)
- [Standard libraries](#standard-libraries)
- [`builtins`](#builtins)
- [`pkgs.lib`](#pkgslib)
Expand Down Expand Up @@ -331,6 +332,31 @@ let pkgs = import <nixpkgs> {};
in pkgs.something
```

## `or` expressions

Nix has a keyword called `or` which can be used to access a value from an
attribute set while providing a fallback to a default value.

The syntax is simple:

```nix
# Access an existing attribute
let set = { a = 42; };
in set.a or 23
```

Since the attribute `a` exists, this will return `42`.


```
# ... or fall back to a default if there is no such key
let set = { };
in set.a or 23
```

Since the attribute `a` does not exist, this will fall back to returning the
default value `23`.

# Standard libraries

Yes, libraries, plural.
Expand Down

0 comments on commit f39b747

Please sign in to comment.