On this page:
3.1 Predicates and Contracts
class-or-interface/ c
object-provides/ c
class-provides/ c
mixin-provides/ c
3.2 Mixins
3.3 Methods
Version: 5.0.2

3 Classes and Objects

Carl Eastlund <cce@racket-lang.org>

 (require unstable/class)

This library is unstable; compatibility will not be maintained. See Unstable for more information.

This module provides tools for classes, objects, and mixins.

3.1 Predicates and Contracts

Recognizes classes and interfaces.

Recognizes objects which are instances of all the given classes and interfaces.

Recognizes classes which are subclasses (not strictly) and implementations, respectively, of all the given classes and interfaces.

(mixin-provides/c [super-expr ...] [sub-expr ...])
Function contract for a mixin whose argument is the parent class c% matching (class-provides/c super-expr ...) and whose result matches (class-provides/c c% sub-expr ...).

3.2 Mixins

(ensure-interface i<%> mx c%)  (class-provides/c c% i<%>)
  i<%> : interface?
  mx : (mixin-provides/c [] [i<%>])
  c% : class?
Returns c% if it implements i<%>; otherwise, returns (mx c%).

3.3 Methods

(send+ obj [message arg ...] ...)
Sends each message (with arguments) to obj, then returns obj.


  (define c%
    (class object%
      (define/public (say msg) (printf "~a!\n" msg))))
  > (send+ (new c%) [say 'Hello] [say 'Good-bye])



  (object:c% ...)

(send-each objs message arg ...)
Sends the message to each object in the list objs, returning (void).


  (define c%
    (class object%
      (init-field msg)
      (define/public (say to) (printf "~a, ~a!\n" msg to))))
  > (send-each
     (list (new c% [msg 'Hello])
           (new c% [msg 'Good-bye]))
     say 'World)

  Hello, World!

  Good-bye, World!