Assignment
a := b
Local variable
Assigns value of expression b to variable a. Type of b must be the same as (or compliant with) the type of a.
All types are assignable, except ticket
For example:
var s = "a string";
s := "another string"
Tuple
Assigns a dimension of a tuple variable.
For example:
var t = (2, "a string");
t[0] := 4;
t[1] := "another string";
/* t is (4, "another string") */
Record
Assigns a field value of a record variable.
For example, consider the following record declaration:
record color {
red : bytes;
green : bytes;
blue : bytes
}
Then the following assigns the red field:
var r = { red = 0xc6; green = 0x6d; blue = 0x32 };
r.red := 0xc8;
/* r is { red = 0xc8; green = 0x6d; blue = 0x32 } */
info
Other assignment operators below are also available for tuple dimension and record field.
a ?:= b : e
Assigns the some value of option b argument to a, and fails with e otherwise.
For example:
var a : 0;
a ?:= unpack<nat>(0x0505) : "ERROR"
This is equivalent to:
var a = 0;
match unpack<nat>(0x0505) with
| some(v) -> a := v
| none -> fail("ERROR")
end
a += b
Increments variable
a (local variable, tuple dimension or record field) by value of b. It is equivalent to a := a + b (see + operator).Fails with
does not fail
a -= b
Decrements variable
a (local variable, tuple dimension or record field) by value of b. It is similar to a := a - b (see - operator). It is not exaclty equivalent because if may fail on nat values (see fail conditions below).Fails with
"NAT_NEG_ASSIGN"
when
a (typed nat)is less than b (typed nat)."INVALID_NEGATIVE_TEZ"
when
a - b value typed tez is negative.a *= b
Multiplies variable
a (local variable, tuple dimension or record field) by value of b. It is equivalent to a := a * b (see * operator).Fails with
does not fail
a /= b
Divides variable
a (local variable, tuple dimension or record field) by value of b. It is equivalent to a := a / b (see * operator).Fails with
does not fail
a &= b
Fails with
does not fail