This repository has been archived on 2025-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
rhaj/rhai_engine/rhaibook/ref/overload.md
2025-04-03 09:18:05 +02:00

37 lines
830 B
Markdown

Function Overloading
====================
{{#title Function Overloading}}
[Functions](functions.md) defined in script can be _overloaded_ by _arity_ (i.e. they are resolved
purely upon the function's _name_ and _number_ of parameters, but not parameter _types_ since all
parameters are dynamic).
New definitions _overwrite_ previous definitions of the same name and number of parameters.
```js
fn foo(x, y, z) {
print(`Three!!! ${x}, ${y}, ${z}`);
}
fn foo(x) {
print(`One! ${x}`);
}
fn foo(x, y) {
print(`Two! ${x}, ${y}`);
}
fn foo() {
print("None.");
}
fn foo(x) { // <- overwrites previous definition
print(`HA! NEW ONE! ${x}`);
}
foo(1,2,3); // prints "Three!!! 1,2,3"
foo(42); // prints "HA! NEW ONE! 42"
foo(1,2); // prints "Two!! 1,2"
foo(); // prints "None."
```