What the language doesn't have
These are missing on purpose, and each has a workaround:
- User-defined functions and recursion. Use snippets, and pass values through Storage.
- Arrays, lists, maps and structs. Use a delimited Text with
StringSplit, numbered variables, or Storage keys built withStringFormat("item{0}", i, ""). while,break,continueandreturn. See Control-flow idioms. To end a script early, put the rest of it in anif.- Short-circuit logic. Nest
ifs. - Very deep expressions. Nesting deeper than 256 values on the evaluation stack is rejected when the script loads. Split a huge expression across variables.