JavaScriptを有効にしてください

【Powershell】関数を引数として渡す

 ·  ☕ 1 分で読めます
Photo by Alan Cabello from Pexels

Photo by Alan Cabello from Pexels

Powershellで関数を引数として渡す

方法1

関数を定義して、引数として渡すときに$funtion:<関数名>としてやる

受け取った側は$func.Invoke(引数)で実行可能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
function Square($n) {
	$n * $n
}

function Cube($n) {
	$n * $n * $n
}

function InvokeFunc($f) {
	$f.Invoke(3)
}

echo "Funtion: Square"
InvokeFunc($function:Square)
# Output:9

echo "-----------"

echo "Function: Cube"
InvokeFunc($function:Cube)
# Output: 27

方法2

引数として渡すときに、スクリプトブロックを渡してやる

受け取った側が実行する方法は方法1と同じ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
function InvokeFunc($f) {
	$f.Invoke(3)
}

echo "Script block: Square"
InvokeFunc({Param($n); $n * $n})
# Output: 9

echo "-----------"

echo "Script block: Cube"
InvokeFunc({Param($n); $n * $n * $n})
# Output: 27

おわり

他の言語でも関数の引数として関数を受け取ってラップする、みたいなことがあると思います。
Powershellでそれをやりたいことがあったので、どうすればいいか調べてみました。

参考
https://stackoverflow.com/questions/22129621/pass-function-as-a-parameter

共有