On this page:
1.1 Predicates and Contracts
class-or-interface/ c
object/ c
class/ c
mixin/ c
1.2 Mixins
ensure-interface
1.3 Methods
send+
send-each
Version: 4.1.4.3

1 Classes and Objects

 (require (planet cce/scheme:3:0/class))

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

1.1 Predicates and Contracts

class-or-interface/c : flat-contract?

Recognizes classes and interfaces.

(object/c spec ...)  flat-contract?
  spec : class-or-interface/c

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

(class/c spec ...)  flat-contract?
  spec : class-or-interface/c

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

(mixin/c [super-expr ...] [arg-expr ...] [sub-expr ...])

Function contract for a mixin whose first argument is the parent class c% matching (class/c super-expr ...), whose remaining arguments match arg-expr ..., and whose result matches (class/c c% sub-expr ...).

1.2 Mixins

(ensure-interface i<%> mx c%)  (class/c c% i<%>)
  i<%> : interface?
  mx : (mixin/c [] [] [i<%>])
  c% : class?

Returns c% if it implements i<%>; otherwise, returns (mx c%).

1.3 Methods

(send+ obj [message arg ...] ...)

Sends each message (with arguments) to obj, then returns obj.

Examples:

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

  Hello!

  Good-bye!

  #(struct:object:c% ...)

(send-each objs message arg ...)

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

Examples:

  (define c%
    (class object%
      (super-new)
      (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!