2017-11-09 11 views
-2

私はPowerShellを初めて使い、学校の講師からのフィードバックを受けました。elseifをelse文に変更

この単純なコード考えてみましょう:

if (!(Test-Path -Path $installDirectory)) { 
    Write-Output "Creating directory $installDirectory" 
    New-Item -Path $installDirectory -ItemType Directory 
} 

elseif (Test-Path -Path $installDirectory) { 
    Write-Output "Directory $installDirectory already exists." 
} 

講師はelseifは私のコードを改善するためのelseのために変更しなければならないと述べました。

これは間違いありませんか?

else { 
    Write-Output "Directory $installDirectory already exists." 
} 

おかげ

+0

? – Filburt

+0

テストする条件が3つ以上ある場合は、 'elseif'が必要です。 'Test-Path'の場合は、パスが存在するか存在しないかの2つの結果だけがあります。 'Else'はここでうまくいくはずです。 –

+4

パターンが 'if(a){...} elseif(!a){...}'ならば、2番目のifを削除することでコードを改善できます。式が魔法のように2つの間で状態を反転する可能性がある場合(つまり、2つのランダムな値をチェックしている場合)、いいえ、それは改善されませんが、この場合にはなります。あなたの講師は正しいですが、彼はおそらくあなたに "なぜなら"ではなく、なぜ言ったのでしょうか? **「それが正しいとは確信できません」ではなく、「なぜ正しいのですか?」と尋ねるアドバイスに尋ねることを習慣にしてください**この場合、あなたは講師に尋ねた方がよいでしょう。 –

答えて

3

あなたifelseif条件によって確認された状態は相互に排他的です。ディレクトリ$installDirectoryが存在するか、存在しません。したがって、2回確認する必要はありません。条件Test-Path -Path $installDirectoryが真である場合、否定された条件は自動的に偽である。明確にするために

あなたはif条件で否定を避けるように、私はまた、あなたの条件を切り替えると思います。それを試してみて、実行しないのはなぜ

if (Test-Path -Path $installDirectory) { 
    Write-Output "Directory $installDirectory already exists." 
} else { 
    Write-Output "Creating directory $installDirectory" 
    New-Item -Path $installDirectory -ItemType Directory 
} 
関連する問題