This is an old revision of the document!
⇐ Index
4rpl supports special syntax for referencing vectors, lists, and tables.
Vectors contain up to 4 fields. These fields can be referenced with .x,.y,.z,.w, .0,.1,.2,.3, or .r,.g,.b,.a. Simply place the '.x' after the variable name for reading or writing.
V4(1 2 3 4) ->vector traceallsp(<-vector.x <-vector.y) 42 ->vector.2 V3(255 0 0) ->red
Lists are collections of data. They are similar to arrays but they do not have a fixed length. They can have items added or removed. The elements in a list can be referenced using specific APIS, like GetListElement (and other List APIs). They can also be accessed using square bracket notation [<-index]
, which is a compact way of writing list-element getters/setters.
[<-index]
can be written on its own and will translate to <-index GetListElementRPL
, effectively getting the element at the given index from a list at the top of the stack. If the item on the stack is no list an error will be printed to the console.
However, if [<-index]
is preceded by a variable setter, ->variable [<-index]
, it along with the variable setter will translate to <-variable <-index SetListElementRPL
, effectively setting element number “index” of the variable to whichever value is on top of the stack. If variable is not a list, a warning will be printed to the console.
CreateList ->list "abc" ->list[0] traceallsp(<-list[0])
Tables are collection of named data. They are sometimes called dictionaries in other languages. They contain data made up of a string name (the key) and a value. A value can be quickly looked up by its name/key. Data in a table can be referenced with GetTableElement (and other Table APIs). Data can also be accessed using curly brace syntax {<-key}
, which is a compact way of writing table-element getters/setters.
{<-key}
can be written on its own and will translate to <-key GetTableElementRPL
, effectively getting the element at the given key from a table at the top of the stack. If the item on the stack is no table an error will be printed to the console.
However, if {<-key}
is preceded by a variable setter, ->variable {<-key}
, it along with the variable setter will translate to <-variable <-key SetTableElementRPL
, effectively setting the value of that key in the variable to whichever value is on top of the stack. If variable is not a table, a warning will be printed to the console.
CreateTable ->table 42 ->table{"SomeName"} traceallsp(<-table{"SomeName"})