Respond to an unknown method call: Difference between revisions

added ruby and perl
(add E example)
(added ruby and perl)
Line 20:
}
}</lang>
 
=={{header|Perl}}==
<lang perl>package Example;
sub new {
bless {}
}
sub foo {
print "this is foo\n";
}
sub bar {
print "this is bar\n";
}
sub AUTOLOAD {
my $name = $AUTOLOAD;
my ($self, @args) = @_;
print "tried to handle unknown method $name\n";
if (@args) {
print "it had arguments: @args\n";
}
}
1;
 
package main;
my $example = Example->new;
 
$example->foo; # prints “this is foo”
$example->bar; # prints “this is bar”
$example->grill; # prints “tried to handle unknown method Example::grill”
$example->ding("dong"); # prints “tried to handle unknown method Example::ding”
# prints “it had arguments: dong”
# prints “tried to handle unknown method Example::DESTROY” <- I don't know why it does this</lang>
 
=={{header|Python}}==
Line 42 ⟶ 73:
example.ding("dong") # prints “tried to handle unknown method ding”
# prints “it had arguments: ('dong',)”</lang>
 
=={{header|Ruby}}==
<lang ruby>class Example
def foo
puts "this is foo"
end
def bar
puts "this is bar"
end
def method_missing(name, *args)
puts "tried to handle unknown method %s" % name # name is a symbol
unless args.empty?
puts "it had arguments: %p" % [args]
end
end
end
 
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"]”</lang>
 
=={{header|Tcl}}==
Anonymous user