Ada Reference Manual (Ada 2022)Legal Information
Contents   Index   References   Search   Previous   Next 

5.2.1 Target Name Symbols

1/5
@, known as the target name of an assignment statement, provides an abbreviation to avoid repetition of potentially long names in assignment statements. 

Syntax

2/5
target_name ::= @

Name Resolution Rules

3/5
If a target_name occurs in an assignment_statement A, the variable_name V of A is a complete context. The target name is a constant view of V, having the nominal subtype of V.

Legality Rules

4/5
A target_name shall appear only in the expression of an assignment_statement.

Dynamic Semantics

5/5
For the execution of an assignment_statement with one or more target_names appearing in its expression, the variable_name V of the assignment_statement is evaluated first to determine the object denoted by V, and then the expression of the assignment_statement is evaluated with the evaluation of each target_name yielding a constant view of the target whose properties are otherwise identical to those of the view provided by V. The remainder of the execution of the assignment_statement is as given in 5.2.

Examples

6/5
Examples of the use of target name symbols:
7/5
Board(1, 1) := @ + 1.0;
            -- An abbreviation for Board(1, 1) := Board(1, 1) + 1.0;
            -- (Board is declared in 3.6.1).
8/5
My_Complex_Array : array (1 .. Max) of Complex; -- See 3.3.23.8.
...
-- Square the element in the Count (see 3.3.1) position:
My_Complex_Array (Count) := (Re => @.Re**2 - @.Im**2,
                             Im => 2.0 * @.Re * @.Im);
   -- A target_name can be used multiple times and
   -- as a prefix if desired.

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe