RosettaCodeData/Task/Variadic-function/Modula-3/variadic-function-2.mod3

27 lines
614 B
Plaintext

MODULE Varargs EXPORTS Main;
IMPORT IO, Fmt;
VAR
strings := NEW(REF TEXT);
ints := NEW(REF INTEGER);
reals := NEW(REF REAL);
refarr := ARRAY [1..3] OF REFANY {strings, ints, reals};
PROCEDURE Variable(VAR arr: ARRAY OF REFANY) =
BEGIN
FOR i := FIRST(arr) TO LAST(arr) DO
TYPECASE arr[i] OF
| REF TEXT(n) => IO.Put(n^ & "\n");
| REF INTEGER(n) => IO.Put(Fmt.Int(n^) & "\n");
| REF REAL(n) => IO.Put(Fmt.Real(n^) & "\n");
ELSE (* skip *)
END;
END;
END Variable;
BEGIN
strings^ := "Rosetta"; ints^ := 1; reals^ := 3.1415;
Variable(refarr);
END Varargs.