|
|
|
Subtype for roman numbers |
|
This example declares a subtype for roman numbers
$ include "seed7_05.s7i"; # Standard Seed7 library
include "wrinum.s7i"; # Import str(ROMAN, ... )
const type: romanNum is subtype integer;
const func string: str (in romanNum: number) is
return str(ROMAN, number);
enable_output(romanNum);
const proc: main is func
local
var romanNum: number is 0;
begin
for number range 1 to 3999 do
writeln(number);
end for;
end func;
The subtype romanNum can be used everywhere an 'integer' can be used.
The 'str' function declared for romanNum cannot be used by integers.
The 'enable_output' template uses the 'str' function of romanNum to declare
'write', 'writeln', etc. for romanNum.
Therefore romanNums are written as roman numbers while integers are written in the usual Arabic numeral system.
To write an integer directly as roman number use 'write(str(ROMAN, number))'.
|