Task

Demonstrate how to make the object respond (sensibly/usefully) to an invocation of a method on it that it does not support through its class definitions.

Note that this is not the same as just invoking a defined method whose name is given dynamically; the method named at the point of invocation must not be defined.

This task is intended only for object systems that use a dynamic dispatch mechanism without static checking.



Related task

   Send an unknown method call.


declare 
  class Example
     meth init skip end
 
     meth foo {System.showInfo foo} end
 
     meth bar {System.showInfo bar} end
 
     meth otherwise(Msg)
        {System.showInfo "Unknown method "#{Label Msg}}
        if {Width Msg} > 0 then
           {System.printInfo "Arguments: "}
           {System.show {Record.toListInd Msg}}
        end
     end
  end
 
  Object = {New Example init}
 in
  {Object foo}
  {Object bar}
  {Object grill}
  {Object ding(dong)}