Pattern matching via switch?

DanielG simpletangent at gmail.com
Mon Mar 16 23:00:30 UTC 2020


I've been playing around with this via inheritance lately (I'm 
aware of the sumtype package but specifically wanted to use 
objects instead of structs), had some good results.

It involves a bit of boilerplate though. I'm essentially using 
the visitor pattern + an anonymous class implementing a matcher 
interface:

https://gist.github.com/dewf/dadc0f2775b40b65a3ebf7458d3c2c79

I would love to use templated return values from the match() 
method, though. Does anybody know how to do that without the 
compiler complaining ("'final' functions cannot be 'abstract'") ?

Specifically, is there any way to make:

    abstract void match(Matcher m);

Become:

    abstract T match(T)(Matcher!T m);

?



More information about the Digitalmars-d-learn mailing list