Deep Assignment Operators

Prev Next

Introduction

Like with regular binary operators, deep binary operators can also be formulated as deep assignment operators, both with and without repetition suffix.

  echo(new line, "Example on vectors:");
  a[] = { 8, 4, 2, 1 };
  b[] = { 1, 2, 3, 4 };
  c[] = { 10, 11 };
  d[] = c[];
  e[] = c[];

  a[] -^= b[]; // { 7, 2, -1, -3 }
  echo(a[]);

  c[] +^= b[]; // {11, 13, 3, 4}
  echo(c[]);

  d2[] +^:= b[]; // With repetition suffix: {11, 13, 13, 15}
  echo(d[]);

  e[] /^= 2; // With a scalar:  { 5, 5.5 }
  echo( e[] );

  echo(new line, "Example on matrices:");

  a[] =  { { 8, 7, 6 }, { 1, 2, -1 }, { -5, 4, 6 } };

  a[] -^^= 1; // Subtract 1 from all elements

  echo( a[] );

  a[] *^^= { { 1,1,1}, {2,2,2}, {3,3,3} };
  echo( a[] );
Example on vectors:
{7,2,-1,-3}
{11,13,3,4}
{10,11}
{5,5.5}

Example on matrices:
{{7,6,5},{0,1,-2},{-6,3,5}}
{{7,6,5},{0,2,-4},{-18,9,15}}
Try it yourself: Open LAN_Features_deep_assignment_operators.b4p in B4P_Examples.zip. Decompress before use.

Deep Operators on Table Cells

Deep assignment operators are not possible on table cells if they are targets because with standard table configuration settings: Strings and numerals. It works if the left-hand value is a numeral and the right-hand value a parameter set. In this case, the parameter set will then be converted to a string representation and written to the table cell.


  table create( t );

  [t:0,0] = 10;
  [t:0,1] = "Hi ";

  [t:0,0] *^= { 5, 6, 7, 8 };
  [t:0,1] +^= { volks, everyone, to all of you };

  table list ( t ); // Parameter sets have been converted to strings.
    0 : {50,60,70,80}                                
    1 : {'Hi volks','Hi everyone','Hi to all of you'}

Try it yourself: Open LAN_Features_deep_assignment_operators_01.b4p in B4P_Examples.zip. Decompress before use.

See also

Assignment operators