読者です 読者をやめる 読者になる 読者になる

大文字・小文字にはまった

PowerShell

PowerShell が大文字・小文字を区別しない、ってのは知ってたんだけど、まさか連想配列のキーでも考慮されない*1とは・・・

PS > $map = @{ 'a'='aaa'; 'A'='AAA'; }
キー 'A' の重複は、ハッシュ リテラルでは許可されていません。
発生場所 行:1 文字:15
+ @{ 'a'='aaa'; ' <<<< A'='AAA'; }

で、スクリプトブロック内で -ceq 使って回避したんだけど、なんか他に方法はないものか。

$map = @{ 'a'={ if ($args[0] -ceq 'a') { 'aaa' } else { 'AAA' } }; }
$r = $map[$ch]
if ($r) { &$r $ch }

*1:よく考えれば当たり前のこと