Records in DWScript support default values and anonymous syntax
// Records in DWScript support default values and anonymous syntax
// that closely resembles JSON construction.
type
TConfig = record
// Default values
ResolutionX : Integer := 1920;
ResolutionY := 1080; // Inferred type
Fullscreen := True;
// Method in record
function Description : String;
end;
function TConfig.Description: String;
begin
Result := Format(
'%dx%d (Fullscreen: %s)',
[ ResolutionX, ResolutionY, BoolToStr(Fullscreen) ]
);
end;
PrintLn('<b>Default Values:</b>');
var cfg : TConfig;
PrintLn(cfg.Description);
// Override defaults
cfg.ResolutionX := 800;
cfg.ResolutionY := 600;
PrintLn(Format(
'Modified: %dx%d',
[ cfg.ResolutionX, cfg.ResolutionY ]
));
PrintLn('');
PrintLn('<b>Anonymous Records (JSON-like):</b>');
// Anonymous record creation
var player := record
name := 'Hero';
level := 42;
"current-location" := 'Dungeon'; // Quoted identifier (for JSON)
stats := record
str := 18;
dex := 14;
end;
end;
PrintLn('Name: ' + player.name);
// Note: Quoted keys cannot be accessed via dot notation.
// They are primarily used for defining structures for export (e.g. JSON).
// Direct JSON serialization
PrintLn('');
PrintLn('<b>JSON Serialization:</b>');
PrintLn(JSON.Stringify(player));
<b>Default Values:</b>
1920x1080 (Fullscreen: True)
Modified: 800x600
<b>Anonymous Records (JSON-like):</b>
Name: Hero
<b>JSON Serialization:</b>
{"current-location":"Dungeon","level":42,"name":"Hero","stats":{"dex":14,"str":18}}