我写这个(工作):Powershell的相当于F#Seq.forall
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)用函数调用类似$我传入ForAll函数的谓词。我似乎无法得到这个工作。有任何想法吗?
Stej,我在此将[脚本块]如果$ _被取代的$ args [实际上是不需要的通知0]。有一天晚上,我试图让这个工作起来,让我感到很困惑。最后,我得到的最短版本只是对你的一个小小的改变。 功能的ForAll($谓语){ ...} $ ALIST =(0..4) $ bList =(1..4) $ ALIST | ForAll {$ _ -gt 0}#返回false $ bList | ForAll {$ _ -gt 0}#返回true $ bList | ForAll {$ _ -gt 0 - 和$ _ -lt 5}#返回true – 2010-01-23 04:50:09
是的,这是绝对真实的。您可以使用自动变量 - 它看起来与foreach-object cmdlet相同。但是,我在$ _中遇到了一些更复杂的脚本问题,所以我不愿意使用$ _。 – stej 2010-01-24 20:59:57