- ベストアンサー
プロトタイプ
質問が二つあります。 ($;@) と書けば、一つ以上の引数を受け付けます。 (\@;\@) と書けば、一つもしくは、二つの配列を引数として受け付けます。 では、一つ以上の配列を引数として受け付けたい場合はどうしたらいいんでしょうか。 (\@;\@\@\@\@\@\@\@\@\@\@……) みたいな感じです。 これが一つ目の質問です。 二つ目の質問は、 ([@])これなんでしたっけ? (\@)とは何か明確な違いがあると思いましたが、思い出せないし、どこに書いてあったのかも覚えてません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ん~, perldoc を読んだ限りでは無理っぽいです. とりあえず @ で受けておいて, サブルーチンの方でチェックするしかないんじゃないかなぁ....
その他の回答 (2)
- kabaokaba
- ベストアンサー率51% (724/1416)
プロトタイプじゃ無理なんじゃない 無名配列で受け渡せば,見た目はひとつの引数で 実際は無制限の引数を渡せるから困らない. #call by valueとcall by referenceに気をつける必要はあるけど ============= D. Conwayがプロトタイプはbest practiceではない 使うべきではないといっているが 私もそう思う. PerlはCではないんだし. ============== sub hoge{ my @temp = @{$_[0]} ...... } hoge [[a],[b],[c],....] 動かしてないけど,こういう感じで, 無名配列(可変長リスト)を渡せばいい.
お礼
ありがとうございます。 呼び出し方が変わるのでそれはできません。(結合も含めて)。 あと、配列からなったリストではなく、配列からなる配列に限定して欲しいのです。
- Tacosan
- ベストアンサー率23% (3656/15482)
1つ目: たぶん (プロトタイプで指定するのは) 無理. 2つ目: 手元の ActivePerl 5.14.2 だと [@] には「Malformed prototype」と文句を言ってくるので, 少なくともこのバージョンでは使えない. \[@] なら使えるけど \@ と同じ意味にしかならないと思う.
お礼
一つ目の質問は無理ですかー。ずっと使い回せてコンパクトなの関数が欲しかったので困りました。 ありがとうございました。 二つ目は書き間違えました。
お礼
わざわざありがとうございます。 しばらく保留することにしました。