4,501
edits
m (fixed indentation) |
No edit summary |
||
Line 1: | Line 1: | ||
{{Built-in|Assignment|←}} allows associating a name with an [[array]] value. Some dialects also allow assignment of function and operator values using the assignment arrow. In [[defined functions]], assignment is global by default, but can be made local through explicit mention of the target name in the function header, or through dynamic [[shadow]]ing using <source lang=apl inline>⎕SHADOW</source>. In [[dfn]]s, assignments are local by default, but can be made global by explicit mention of the target namespace. Modified/indexed/selective assignment updates the most local definition. | |||
==Examples== | |||
===Basic usage=== | |||
Common examples (boxing on, and [[index origin]] is 0): | |||
<source lang=apl> | |||
⎕←mat←(1 2 3)(1 2 3) | |||
┌─────┬─────┐ | |||
│1 2 3│1 2 3│ | |||
└─────┴─────┘ | |||
</source> | |||
===Indexed assignment=== | |||
Individual elements can be updated using index assignment: | |||
<source lang=apl> | |||
mat[0]←1 | |||
mat | |||
┌─┬─────┐ | |||
│1│1 2 3│ | |||
└─┴─────┘ | |||
<source> | |||
A semicolon is necessary when dealing with a [[matrix]]: | |||
<source lang=apl> | |||
mat←3 3⍴⍳9 | |||
mat | |||
0 1 2 | |||
3 4 5 | |||
6 7 8 | |||
mat[0 1;] | |||
0 1 2 | |||
3 4 5 | |||
mat[0 1;0 1]←0 | |||
mat | |||
0 0 2 | |||
0 0 5 | |||
6 7 8 | |||
</source> | |||
For higher-[[rank]] arrays, the number of semicolons needed is one less than the array rank. | |||
===Modified assignment=== | |||
Some dialects allow placing a function the the immediate left of the assignment arrow: | |||
<source lang=apl> | |||
var←42 | |||
var+←1 | |||
var | |||
43 | |||
</source> | |||
<source>var+←1</source> is essentially equivalent to <source>1⊣var←var+1</source> except that the result is [[shy]]. | |||
===Modified indexed assignment=== | |||
Modified assignment can also be combined with indexed assignment: | |||
<source lang=apl> | |||
mat←3 3⍴0 | |||
mat | |||
0 0 0 | |||
0 0 0 | |||
0 0 0 | |||
mat[0 1;1]+←1 | |||
mat | |||
0 1 0 | |||
0 1 0 | |||
0 0 0 | |||
mat[1;1],←'x' | |||
mat | |||
0 1 0 | |||
0 x 0 | |||
0 0 0 | |||
</source> | |||
== External Links == | |||
=== Documentation === | |||
* [https://help.dyalog.com/latest/index.htm#Language/Primitive%20Functions/Assignment.htm Dyalog] | |||
* [https://microapl.com/apl_help/ch_020_010_110.htm APLX] | |||
* J: [https://code.jsoftware.com/wiki/Vocabulary/eqdot local], [https://code.jsoftware.com/wiki/Vocabulary/eqco global] | |||
{{APL built-ins}}[[Category:Primitive functions]] | |||