http://d.puremagic.com/issues/show_bug.cgi?id=596
--- Comment #12 from [email protected] 2013-03-03 10:50:27 PST --- (In reply to comment #11) > The problem of your proposed pattern matching is that there is not necessarily > a simple correlation between constructor parameters and runtime values. For > instance, for this struct declaration: > > struct Foo { > int n; > this( int a, int b ) { > n = a * b; > } > } > > , Foo( 12, void ) just doesn't make any sense. For tuples however, this works: Arrays don't have a constructor, so they don't have this problem in a switch. Regarding structs, the problem has some solutions (both are needed): 1) Don't accept structs that have one or more constructors, and special-case std.typecons.Tuple in the compiler so tuples are accepted (the compiler assumes their constructor is just a series of field assignments). 2) If you want to support the general case of structs that have a constructor, then such structs must have a standard method like "unapply", that is used by the switch itself. This is the solution used by Scala language, it's shown in the Comment 9: http://d.puremagic.com/issues/show_bug.cgi?id=596#c9 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
