[racket] Choosing what class to instantiate at runtime

From: Danny Yoo (dyoo at hashcollision.org)
Date: Tue Jun 26 10:22:59 EDT 2012

> The solution that springs to mind is to choose which class to instantiate
> with (if (list? param-a) ,,,) but then I'd have to state the parameter lists
> twice.

Hi Kieron,


Can you choose the class using an if or cond?

For example:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (try-it x)

  (define the-class%
    (if (list? x) multi-item-representer% item-representer%))

  (define r (new the-class% [param-a x] [param-b 50] [param-c "yellow"]))

  (send r print))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

This bit of code binds the-class% at runtime to one of those classes,
depending on x.

Posted on the users mailing list.