2009-05-18 3 views
2

Я пытаюсь напечатать вывод функции только тогда, когда это правда, но пока все попытки были неудовлетворительными.F # Печать, если true

Что-то на линии:

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

Где b является логическим и a является целым числом. Когда я пытаюсь это я получаю:

val printFactor : 'a -> bool -> unit 

Любые предложения?

EDIT:

Чтобы положить вещи в контексте им пытаются использовать это с оператором трубы. Допустим, у меня есть функция xyz, которая выводит список (int, bool). Id нравится делать что-то на этих строках:

xyz |> printFactor 

для печати только истинных значений.

+0

Непонятно, что вы просите или что вы пытаетесь сделать. – Brian

+0

- это правильная подпись типа для функции, которую вы написали. что такое функция 'print_any'? посмотри туда дальше. – nlucaroni

ответ

5

Вы можете сделать это, например. это

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) 

Это первый фильтр, а затем печать.

+0

разбивка на фильтр, затем печать работала красиво. благодаря – Marcom

Смежные вопросы