2010年7月22日木曜日

◆スクリプトブロックを引数で渡す

こんな関数があったとする。

function fncHoge{
    Write-Host "Hello World"
    Write-Host "こんにちは みなさん"
    Write-Host "さようなら"
    Write-Host “終わり”
}


ここで、ある時は「さようなら」の代わりに「おやすみなさ」を表示させたい場合、引数でスイッチを渡してif文で切り分けるというのも有りだが、またあとから「こんばんは」も発生したりすると修正が必要になる。

こんな時はスクリプトブロックを引数で渡せるような関数にしておくのも一つの手かもしれない。

function fncHoge([scriptblock]$speak){
    Write-Host "Hello World"
    Write-Host "こんにちは みなさん"
    & $speak
    Write-Host “終わり”
}

fncHoge {Write-Host "さようなら"}
Write-Host
fncHoge {Write-Host "おやすみなさい"}
Write-Host
fncHoge {Write-Host "こんばんは"}


受け取ったスクリプトブロックは実行演算子(&)で実行してあげる。

結果は、こんな感じ。

PS>D:\desktop\fncHoge.ps1
Hello World
こんにちは みなさん
さようなら
終わり 

Hello World
こんにちは みなさん
おやすみなさい
終わり

Hello World
こんにちは みなさん
こんばんは
終わり


これで、最後のあいさつにフランス語が来ようがドイツ語が来ようが修正する必要のない関数が出来上がる。

0 件のコメント:

コメントを投稿