Walter Bright <newshou...@digitalmars.com> wrote:

foo match {
  case b: Bar => b.doBarMethod
  case b: Bar2 => b.doBar2Method
  case _ => println("Oh no!")
}
 (1, (1,2)) match {
  case (1, (1, _)) => println("nice tuple")
  case _ =>
}
 def main(args: Array[Byte]) =
  args(0) match {
    case "-help" => println("Usage: ...")
    case "-moo" => println("moo")
  }

D already supports string switches.

Which means that D supports array switches (untested code):

switch( (string)foo ) {
  case (string)[1,2,3]: doSomething( );
  case (string)[3,2,1]: doSomethingElse( );
}

Might require some tweaking, but I believe this would work. Not saying it's a good idea, though.

As for structs:

switch ( foo.toHash( ) ) {
  case S(1,2,3).toHash( ): doSomething( );
  case S(3,2,1).toHash( ): doSomethingElse( );
}

If toHash is CTFE-able. Just as untested, and might not work at all.

--
Simen

Reply via email to