我写了这个(有效):
function ForAll {
BEGIN {
$allTrue = $true
}
PROCESS {
if ($_ -lt 1) { $allTrue = $false }
}
END {
$allTrue
}
}
$aList = (0..4)
$bList = (1..4)
$aList | ForAll # returns false
$bList | ForAll # returns true
但我想要做的是将 ($_ -lt 1) 替换为一个名为 $predicate 的函数,我将其传递到 ForAll 函数中。我似乎无法让它发挥作用。有任何想法吗?
使用[scriptblock],恕我直言,它比这里使用函数要容易得多。这就是发明脚本块的任务。
function ForAll([scriptblock]$predicate) {
BEGIN {
$allTrue = $true
}
PROCESS {
if (!(& $predicate $_)) { $allTrue = $false }
}
END {
$allTrue
}
}
$aList = (0..4)
$bList = (1..4)
$aList | ForAll {$args[0] -le -10 } # returns false
$bList | ForAll {$args[0] -le 10 } # returns true
$args[0] 表示传递给脚本块的第一个参数 - 在本例中为 $_。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)