F# 屈服!(yieldbang)操作员
目前我正在学习F#,但我很难理解这一点:F# 屈服!(yieldbang)操作员,f#,yield,F#,Yield,目前我正在学习F#,但我很难理解这一点: let allPrimes = let rec allPrimes' n = seq { if isPrime n then yield n yield! allPrimes' (n + 1) } allPrimes' 2 我不知道会产生什么结果操作符确实如此,尽管我读过其他更简单的例子,它似乎是屈服返回一个内部序列。yield bang操作符将被调用序列表达式生成的子序列合并到最终序列
let allPrimes =
let rec allPrimes' n =
seq {
if isPrime n then
yield n
yield! allPrimes' (n + 1) }
allPrimes' 2
我不知道
会产生什么结果代码>操作符确实如此,尽管我读过其他更简单的例子,它似乎是屈服
返回一个内部序列。yield bang操作符将被调用序列表达式生成的子序列合并到最终序列中。或者更简单地说:它“展平”返回的序列,以便在最终序列中包含子序列的元素
举个例子:如果没有收益率爆炸算子,你会得到
{ prime1 { prime2 { prime3 .... }}}
使用收益率爆炸算子,你可以得到
{ prime1 prime2 prime3 ... }
其中每个{
表示一个新序列。Side节点:我的第一个示例的实际结果甚至会包含更多序列,因为它将返回仅包含序列的序列,因为只有n是prime
时才返回prime