gpt4 book ai didi

Powershell 相当于 F# Seq.forall

转载 作者:行者123 更新时间:2023-12-04 07:02:19 25 4
gpt4 key购买 nike

我写了这个(有效):

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] 表示传递给脚本块的第一个参数 - 在这种情况下它是 $_。

关于Powershell 相当于 F# Seq.forall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2092159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com