代码之家  ›  专栏  ›  技术社区  ›  Marcom

如果为真,则打印

  •  2
  • Marcom  · 技术社区  · 15 年前

    我试图只在函数输出为真时打印它,但到目前为止,所有的尝试都没有成功。

    以下几行的内容:

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

    在哪里? b 是布尔值,并且 a 是一个整数。 当我尝试时,我得到:

    val printFactor : 'a -> bool -> unit
    

    有什么建议吗?

    编辑:

    为了把事情放到上下文中,我尝试将它与管道操作符一起使用。假设我有一个函数 xyz 它输出一个(int,bool)列表。我想在这些行上做些什么:

    xyz |> printFactor
    

    只打印真值。

    1 回复  |  直到 9 年前
        1
  •  5
  •   Brian    15 年前

    你可以这样做

    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)
    

    也就是说,先过滤,然后打印。