Mix struct types in the same array
tirithen
tirithen at gmail.com
Wed Dec 18 22:00:20 UTC 2019
I want to have a array/list/queue of instances of various struct
types that represent events. How can I achieve that? With classes
I would have interfaces I guess, but I want to use structs if
possible as they seem less complex (and faster?).
Can I wrap each struct with in another struct called something
like Entry that in turn can contain the event struct some how, or
will that just move the problem?
import std.stdio;
struct User {
string username;
string email;
string unverifiedEmail;
string password;
}
struct UserCreate {
string username;
string email;
void applyTo(ref User user) {
user.username = this.username;
user.unverifiedEmail = this.email;
}
}
struct UserChangePassword {
string password;
void applyTo(ref User user) {
user.password = this.password;
}
}
// Not usable for structs
interface Event {
void applyTo(T)(ref T entity);
}
void main() {
// How can I create an array with mixed structs?
Event[] events;
events ~= UserCreate("hej", "hej at example.com");
events ~= UserChangePassword("hased1234");
User user;
foreach (event; events) {
event.applyTo(user);
}
writeln(user);
}
More information about the Digitalmars-d-learn
mailing list