None is a special value that represents nothing or emptiness (similar to null in many programming languages). Functions can return it, and it also serves as a placeholder for optional parameters.
| Function | Description | Return type |
|---|---|---|
.none | Creates an empty value. | none |
.isnone {value} | Checks whether value is none. | Boolean |
.otherwise {value} {fallback} | Returns value if it is not none, fallback otherwise. Works best with function call chaining. | Type of either value or fallback |
.ifpresent {value} {lambda} | If value is not none, maps it to a new value according to the lambda. If none, returns none. Works best with function call chaining. | Type returned by lambda, or none |
.takeif {value} {lambda} | Returns value if the boolean-returning lambda is accepted on value. Returns none otherwise. Works best with function call chaining. | Type of value, or none |
Native functions from the stdlib, written in Kotlin, often accept nullable parameters. When such a parameter is passed None, the function treats it as if it were null, which often means that the parameter is considered absent.
This is particularly useful when a value is stored in a variable that might or might not be None, and you want to forward it to a function without checking first.
.function {highlight}
color?:
.container background:{.color}
Value of color: .color
1. .highlight {teal}
2. .highlightValue of color: teal
Value of color: None
Hi! I'm .name::otherwise {unnamed}name is John: Hi! I’m Johnnone: Hi! I’m unnamed.num::takeif {@lambda x: .x::equals {5}}num is 5: 5Confused about
@lambda? It begins a parametric inlineLambda. Check its page for further details.
.num::takeif {@lambda x: .x::iseven}::ifpresent {Even}::otherwise {Odd}num is even: Even.x::ifpresent {@lambda Yes, .1 is present}::otherwise {Not present}x is something: Yes, something is presentnone: Not presentHere, the lambda parameter is implicit and accessed by position.