私が書いた最後のスクリプトの1つでは、switch文の振る舞いに似た振る舞いが必要でした。 Perlで同等のものを簡単に検索すると、use Switch
になりました。最初はすべてがうまく機能していて、すべてが説明的ではないエラーでクラッシュした(これは正規表現の場合に起こったswitch文で起こりましたが、奇妙なことに他のswitch文では起こりませんでした)。スイッチ対与えられた対対Perlのif-elsif-else対
EDIT:墜落したコードはこの1つのように見ていた:Switch.pm
の使用を断念し、代わりを検索するために私を導い
switch ($var) {
case /pattern1/ {...}
case /pattern2/ {...}
...
else {...}
}
。
私はgiven
とfor-when
を見つけました。もちろん、直接的でやや素朴なものがあります。if-elsif-else
です。
- なぜ
Switch.pm
が不安定なのですか? given
とfor-when
の構造は類似していますが、違いがあると思います(両方存在するため)。それは何ですか?if-elsif-else
は他のオプションよりも大幅に遅いですか?
関連:http://stackoverflow.com/q/2630547/5830574 – PerlDuck
これは私の最初の質問に感謝します! '与えられた'にはより多くの能力があることを知っていることもうれしいです。 – yonyon100
'given'がレキシカル' $ _'を設定するのに使われましたが、それはもう存在しません。 /// 'given'の式はスカラーコンテキストで評価され、' for'は返されたスカラーに対してループします。 ///何かは、 'given'と' for'で許されるフロー制御キーワードに違いがあることを示しています。 – ikegami