User Tools

Site Tools


4rpl:commands:specialsyntax

This is an old revision of the document!


Table of Contents

Index

Description

4rpl supports special syntax for referencing vectors, lists, and tables.


Vectors

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.

Example

V4(1 2 3 4) ->vector
traceallsp(<-vector.x <-vector.y)
42 ->vector.2
V3(255 0 0) ->red

Lists

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.

Example

CreateList ->list
"abc" ->list[0]   
traceallsp(<-list[0])

Tables

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.

Example

CreateTable ->table
42 ->table{"SomeName"}
traceallsp(<-table{"SomeName"})
4rpl/commands/specialsyntax.1610671423.txt.gz · Last modified: 2025/02/14 14:56 (external edit)