2020引っかかったのでメモ。Rakuでは関数やメソッドを引数を厳密に宣言させることができる、というかある程度しなきゃいけない。それを利用して型や条件によってある一つの関数名でマルチディスパッチさせることができる。引数がStr型であるか引数がInt型であり、かつ10未満か引数がInt型であり、かつ10以上かといったことを表現するコードは以下になる。subでそれぞれの関数を実行する前の処理を書いている。実行結果は以下である。10)が呼ばれた本題は引数をリストで受け取る時の方法。この慣習はSlurpyと呼ばれている。あえずSlurpyとしておく(誰か教えて...)。5で配列の引数を受け取る場合は以下のように書く。@args;}func(1,2,3);でRakuでも同じのりで書くとどうなるか。@args;}func(1,2,3);これを実行しようとするとこんなふうに怒られる。<BOL>⏏func(1,2,3);で、Slurpyの登場。@argsの受け取りを*@argsまたは+@argsと記述する。');}これはうまいことコンパイル、実行される。以下のようにwhereで中身をチェックすればよい。');}ちょっと冗長な気がするが、公式のドキュメントにこのやり方が書いてあった。argumentsこれを利用してマルチディスパッチさせるとこんなコードになる。'hage');func(1,2,3);func(1,'hoge','moge');結果。呼ばれたwhereの条件にマッチした関数が、なければfunc(*@args)が呼ばれる。5のcallerみたいなのがはRakuにあるのだろうか...?追記callframeで取れる。skajiさんに教えてもらった。#func}func();ツッコミあれば、ついさっきDisqusを入れたのでそこでもなんでもいいのでください!以下参考になるページ。