#!/usr/bin/ruby

#
## https://rosettacode.org/wiki/Respond_to_an_unknown_method_call
#

class Example {
    method foo {
        say "this is foo"
    }
    method bar {
        say "this is bar"
    }
    method AUTOLOAD(_, name, *args) {
        say ("tried to handle unknown method %s" % name);
        if (args.len > 0) {
            say ("it had arguments: %s" % args.join(', '));
        }
    }
}
 
var example = Example.new;
 
example.foo;          # prints “this is foo”
example.bar;          # prints “this is bar”
example.grill;        # prints “tried to handle unknown method grill”
example.ding("dong"); # prints “tried to handle unknown method ding”
                      # prints “it had arguments: dong”
