Search⌘ K
AI Features

Struct Literals and Static Members

Explore how to utilize struct literals to create immutable struct instances and manage static members to share data among objects in D programming. Understand the use of static initialization and finalization for thread-level and program-wide control.

Struct literals

Similar to being able to use integer literal values like 10 in expressions without needing to define a variable, struct objects can be used as literals as well.

Struct literals are constructed by the object construction syntax.

TimeOfDay(8, 30) // ← struct literal value

Let’s first rewrite the main() function using what we have learned. The variables will be constructed by the construction syntax and be immutable this time:

D
import std.stdio;
struct TimeOfDay {
int hour;
int minute;
}
TimeOfDay addDuration(TimeOfDay start,TimeOfDay duration) {
TimeOfDay result;
result.minute = start.minute + duration.minute;
result.hour = start.hour + duration.hour;
result.hour += result.minute / 60;
result.minute %= 60;
result.hour %= 24;
return result;
}
void main() {
immutable periodStart = TimeOfDay(8, 30);
immutable periodDuration = TimeOfDay(1, 15);
immutable periodEnd = addDuration(periodStart, periodDuration);
writefln("Period end: %s:%s", periodEnd.hour, periodEnd.minute);
}

Note that periodStart and periodDuration need not be defined as named variables in the code above. Those are in fact temporary ...