Multiple dispatch
func foo(Number a) {
say a
}
func foo(String a) {
say a
}
foo(1234) # calls the first function
foo("bar") # calls the second functionfunc foo(Array a) { ... } # works with an array
func foo(Hash h) { ... } # works with an hash
func foo(any) { ... } # works with anything elseclass Example {
method foo(Number n, String s) {
say "first"
}
method foo(Array a) {
say "second"
}
}
var obj = Example()
obj.foo(1234, "foo") # calls the first method
obj.foo([1,2,3]) # calls the second methodLast updated