電子書籍の厳選無料作品が豊富!

質問が二つあります。
($;@)
と書けば、一つ以上の引数を受け付けます。
(\@;\@)
と書けば、一つもしくは、二つの配列を引数として受け付けます。

では、一つ以上の配列を引数として受け付けたい場合はどうしたらいいんでしょうか。
(\@;\@\@\@\@\@\@\@\@\@\@……)
みたいな感じです。
これが一つ目の質問です。


二つ目の質問は、
([@])これなんでしたっけ?
(\@)とは何か明確な違いがあると思いましたが、思い出せないし、どこに書いてあったのかも覚えてません。

A 回答 (3件)

ん~, perldoc を読んだ限りでは無理っぽいです.



とりあえず @ で受けておいて, サブルーチンの方でチェックするしかないんじゃないかなぁ....
    • good
    • 0
この回答へのお礼

わざわざありがとうございます。
しばらく保留することにしました。

お礼日時:2012/06/23 14:45

プロトタイプじゃ無理なんじゃない



無名配列で受け渡せば,見た目はひとつの引数で
実際は無制限の引数を渡せるから困らない.

#call by valueとcall by referenceに気をつける必要はあるけど

=============

D. Conwayがプロトタイプはbest practiceではない
使うべきではないといっているが
私もそう思う.
PerlはCではないんだし.

==============
sub hoge{
my @temp = @{$_[0]}
......
}

hoge [[a],[b],[c],....]

動かしてないけど,こういう感じで,
無名配列(可変長リスト)を渡せばいい.
    • good
    • 0
この回答へのお礼

ありがとうございます。
呼び出し方が変わるのでそれはできません。(結合も含めて)。
あと、配列からなったリストではなく、配列からなる配列に限定して欲しいのです。

お礼日時:2012/06/23 14:48

1つ目: たぶん (プロトタイプで指定するのは) 無理.



2つ目: 手元の ActivePerl 5.14.2 だと [@] には「Malformed prototype」と文句を言ってくるので, 少なくともこのバージョンでは使えない.

\[@] なら使えるけど \@ と同じ意味にしかならないと思う.
    • good
    • 0
この回答へのお礼

一つ目の質問は無理ですかー。ずっと使い回せてコンパクトなの関数が欲しかったので困りました。
ありがとうございました。

二つ目は書き間違えました。

お礼日時:2012/06/22 21:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!