他のすべての返信は、これまでのところ私にはかなり複雑に見えます。 Perl関数を書くとき、私は通常、渡されたすべての引数を関数の最初の行に "展開"します。
sub someFunction {
my ($arg1, $arg2, $arg3) = @_;
これは、あなたが
... someFunction (arg1, arg2, arg3)
としての機能を宣言し、あなたがそのように行うと、最後の引数としてハッシュを渡す場合、あなたはどんなトリックなしで大丈夫です他の言語に似ています特別な魔法です。例えばは:
sub testFunc {
my ($string, %hash) = @_;
print "$string $hash{'abc'} $hash{'efg'} $string\n";
}
my %testHash = (
'abc' => "Hello",
'efg' => "World"
);
testFunc('!!!', %testHash);
出力が期待されているとおり
!!! Hello World !!!
これはPerlの引数でbecausは常にスカラー値の配列として渡されると、あなたはハッシュを渡すと、それはキー値の作品/ペアがありますその配列に追加されます。上記のサンプルでは、アレイ(@_
)として関数に渡された引数は、実際には次のとおり
'!!!', 'abc', 'Hello', 'efg', 'World'
と「!'は%string
にシンプルに割り当てられ、%hash
は他のすべての引数を "捨て"、常にキーとして解釈し、次の値を(すべての要素が使い尽くされるまで)解釈します。
ハッシュを最初の引数にすることはできません。それ以外の場合はすべてを呑み込み、他のすべての引数は割り当てられません。
もちろん、最後の引数として配列に対して全く同じことが働きます。ここでの唯一の違いは、配列はキーと値を区別しないということです。それらの引数はすべて値であり、配列にプッシュされるからです。
コードを表示できますか? –
私たちに電話番号を教えてもらえますか? –