做為新一代的程式語言,物件導向的功能可不能少,其中關於函式的重載(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。