On Thursday, 27 June 2024 at 18:51:19 UTC, Josh Holtrop wrote:
Questions: 4. Any other general improvements to my solution?
I know it's kind of an unpopular choice these days but one could go
with inheritance and polymorphism or instanceof tests. something along the lines of ```d import std.stdio : writeln; class Item { public void operationA() { } public void operationB() { } } class ItemA : Item { override public void operationA() { writeln("ItemA"); } } class ItemB : Item { override public void operationB() { writeln("ItemB"); } } void main(string[] args) { auto items = [new ItemA(), new ItemB()]; writeln("operation a:"); foreach (item; items) { item.operationA(); } writeln("operation b:"); foreach (item; items) { item.operationB(); } writeln("instance of:"); foreach (item; items) { if (auto itemB = cast(ItemB) item) { writeln("Found an ItemB"); } } } ``` drawback might be, that if you add a new subtype the compiler will not warn you that you did not implement one case for one of the implementations. Kind regards, Christian