This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
multiple_return_values [2019/04/19 21:20] – korshun | multiple_return_values [2019/04/22 00:32] (current) – korshun | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Multiple return values | + | ====== Multiple return values ====== |
- | Some ACSUtils functions return multiple values (e.g. [[math# | + | Some ACSUtils functions return multiple values (e.g. [[math# |
ACSUtils uses a convention to fake returning multiple values from a function. The convention is as follows: there are 8 global variables with names '' | ACSUtils uses a convention to fake returning multiple values from a function. The convention is as follows: there are 8 global variables with names '' | ||
Line 11: | Line 11: | ||
int newX = r1; | int newX = r1; | ||
int newY = r2; | int newY = r2; | ||
- | </ | ||
- | |||
- | The following is also valid: | ||
- | < | ||
- | RotateVector(x, | ||
- | x = r1; | ||
- | y = r2; | ||
- | </ | ||
- | |||
- | '' | ||
- | < | ||
- | normalize3d(x, | ||
- | int newX = r1; | ||
- | int newY = r2; | ||
- | int newZ = r3; | ||
</ | </ | ||
Line 47: | Line 32: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | < | ||
+ | ParseFixed(" | ||
+ | int error = r1; | ||
+ | int result = r2; // no compiler error, despite assigning a fixed to int | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | But overwriting argument variables immediately after calling the function is valid: | ||
+ | < | ||
+ | RotateVector(x, | ||
+ | x = r1; | ||
+ | y = r2; | ||
+ | </ | ||
+ | |||
+ | An example of a function returning three values: | ||
+ | < | ||
+ | normalize3d(x, | ||
+ | int newX = r1; | ||
+ | int newY = r2; | ||
+ | int newZ = r3; | ||
+ | </ | ||