0
から複数の値を返すとき"または" vs "||"サブ
sub return_hash_and_array{
my %hash = ('key_1' => "value_1", 'key_2' => 'value_2');
my @array = ("item", "item2");
if (@array > 0){
return(\%hash, \@array);
}else{
return;
}
}
をこのサブを使用している場合、私は両方を期待以下は
my ($href_hash, $aref_array) = return_hash_and_array()
|| die "ERROR: blah";
を動作しませんなぜあなたは説明してくださいしかし、これは
my ($href_hash, $aref_array) = return_hash_and_array()
or die "ERROR: blah";
の作品でした同じことをしてください。
私はいつも混乱してしまいます。と "or"。私がいつも "||"を考えるときはいつも "or"を使うべきですか?いつあなたは "||"を使わなければなりませんか?あなたの例では、私はなぜ "||"操作を強制しているので、 "||"を使うのは良い考えです。 – JohnnyLoo
@JohnnyLoo 'or'はフロー制御に適しています - ' my $ v = open ... or die $ !; 'は' or'の前のすべてを行い、最後にfalseを返したら他のオプションに行きます。 'my $ arg = shift // 'default';' - 'shift'が' undef'を返した場合、割り当ての前に必ず 'default'を使うようにしてください(同じものは '||'と同じです)。スカラーコンテキストを忘れないでください。 (答えのかっこは、優先順位の規則のために注文が何であるかを強調するためだけにあります) – zdim
私は同意して、デフォルトでは '||'を使用しますが、 'または' '、' or return')を返します。 – ikegami