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 18:17] – korshun | multiple_return_values [2019/04/21 21: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 '' | ||
| - | Here's an example, RotateVector returns X and Y: | + | Here's an example, |
| < | < | ||
| Line 32: | 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; | ||
| + | </ | ||