做為新一代的程式語言,物件導向的功能可不能少,其中關於函式的重載(function overloading),自然要有「多型」的機制,在 Perl6 來說,這叫做「多重分派」( Multiple Dispatch)。
簡言之,Perl6 可以根據參數的型態來呼叫適當的副程式,用例如下:
# 副程式 1
multi sub saysomething(Int $i) {
say "輸入的是整數: $i";
}
# 副程式 2
multi saysomething(Str $s) { # 關鍵字 multi 即代表 sub,因此,sub 可以省略
say "輸入的是字串: $s";
}
saysomething("傻子");
saysomething(123);
# => 結果:
# 輸入的是字串: 傻子
# 輸入的是整數: 123
如上例所示,函式名稱都是一樣的,不過,當傳入的參數為字串「傻子」時,Perl6 會呼叫副程式 2;而當傳入的參數是整數時,則呼叫副程式 1。
