F#打印如果为真

时间:2009-05-18 19:12:11

标签: f# functional-programming

我正在尝试仅在真实时输出函数的输出,但到目前为止所有的尝试都是不合理的。

有些内容:

let printFactor a b =  if b then print_any((a,b)) 

其中b是布尔值,a是整数。 当我尝试它时,我得到:

val printFactor : 'a -> bool -> unit

有什么建议吗?

编辑:

把事情放在上下文中我试图用管道操作符来使用它。假设我有一个函数xyz,它输出一个(int,bool)列表。我喜欢在这些方面做点什么:

xyz |> printFactor

仅打印真实值。

1 个答案:

答案 0 :(得分:6)

你可以做到,例如此

let xyz() = [ (1,true); (2,false) ]

let printFactor (i,b) = 
    if b then
        printfn "%A" i

xyz() |> List.iter printFactor

但这可能更惯用,例如此

xyz() 
|> List.filter (fun (i,b) -> b) 
|> List.iter (fun (i,b) -> printfn "%d" i)

即首先过滤,然后打印。