lval
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | lval [2007/08/06 21:25] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | # $EPIC: lval.txt,v 1.1 2007/08/06 21:25:50 jnelson Exp $ | ||
+ | |||
+ | ======Lvalues (aka lvals)====== | ||
+ | An lvalue is the token on the left hand side of an assignment operation. | ||
+ | More broadly speaking, an lvalue is a //thing// that may be //assigned to//. | ||
+ | |||
+ | There are several places where you use an lvalue: | ||
+ | | /assign **lval** stuff | Global variable to be assigned a value | | ||
+ | | /local **lval** stuff | Local variable to be assigned a value | | ||
+ | | @ **lval** = stuff | Global variable to be assigned a value | | ||
+ | | /stub assign **lval** filename | Global variable to be loaded on demand | | ||
+ | | $unshift(**lval** stuff) | Prepending to a global variable | | ||
+ | | /unshift **lval** stuff | Prepending to a global variable | | ||
+ | | $push(**lval** stuff) | Appending to a global variable | | ||
+ | | /push **lval** stuff | Appending to a global variable | | ||
+ | | $shift(**lval** stuff) | Prepending to a global variable | | ||
+ | | /shift **lval** stuff | Prepending to a global variable | | ||
+ | | $pop(**lval** stuff) | Prepending to a global variable | | ||
+ | | /pop **lval** stuff | Prepending to a global variable | | ||
+ | | $aliasctl(SET **lval** ...) | | | ||
+ | | @ **lval**++ | | | ||
+ | | @ **lval**-- | | | ||
+ | | Any math operator that does an assignment | | | ||
+ | | $splice(**lval** stuff) | | | ||
+ | | $shiftbrace(**lval**) | | | ||
+ | | $sar(r/ | ||
+ | | $msar(r/ | ||
+ | | $getopt(...) | | | ||
+ | | /fe (...) **lvals** {...} | | | ||
+ | | /fe :**lval** (...) **lvals** {...} | | | ||
+ | | Arglists | | | ||
+ | |||
+ | ======What an lvalue looks like====== | ||
+ | An lvalue may be prefixed with zero, one, or two colons: | ||
+ | * Zero colons means use a local variable if there is one, otherwise use a global variable. | ||
+ | * One colon means use a local variable only | ||
+ | * Two colons means use a global variable only | ||
+ | |||
+ | An lvalue contains any number of characters: | ||
+ | * Any isalpha(3) character | ||
+ | * Any isdigit(3) character | ||
+ | * The underscore (" | ||
+ | * The dot (" | ||
+ | |||
+ | Followed by any number of //array subexpressions//, | ||
+ | expression surrounded by square brackets. | ||
+ | what may be inside an array subexpression. | ||
+ | |||
+ | ======Examples: | ||
+ | /assign myvar one | ||
+ | /echo $myvar | ||
+ | Will output " | ||
+ | |||
+ | /local myvar two | ||
+ | /echo $myvar | ||
+ | Will output " | ||
+ | |||
+ | /echo $::myvar | ||
+ | Will output " | ||
+ | |||
+ | /assign :othervar one | ||
+ | Creates a //local// variable, because one colon is prefixed. | ||
+ | |||
+ | /assign ::othervar two | ||
+ | Creates a //global// variable, because two colons are prefixed. | ||
+ | |||
+ | /assign othervar three | ||
+ | Changes the //local// variable, because local variables overrule global vars. | ||
+ | |||
+ | @ myvar$testing = [one] | ||
+ | Invalid because | ||
+ | |||
+ | @ myvar[$testing] = [one] | ||
+ | Allowed, because array subexpressions can contain any text expression. | ||
+ | Please note that //array subexpressions// | ||
+ | are always treated as text, even in an expression! | ||
+ | |||
+ | @ myvar.$function() = [one] | ||
+ | Invalid, because no $'s are permitted | ||
+ | |||
+ | @ myvar[$function()] = [one] | ||
+ | Permitted, because the array subexpression can contain any text. | ||
+ | |||
+ | |||
lval.txt · Last modified: 2007/08/06 21:25 by 127.0.0.1