3
アレイに格納された多数のオブジェクトを処理しています。この処理には時間がかかりますが、fxが処理段階にあることを監視できるようにしたいと考えています。コンソールへの印刷とアレイの処理
私の目標は、操作を続けながら、何らかの種類のProcessing thing number *x*
をコンソールに印刷できるようにすることです。たとえば、これで
let x = [|1..10..100000|]
x
|> Array.mapi (fun i n -> (i, n))
|> Array.map (fun (i, n) -> printfn "Processing n %i" i, (n * 2)))
|> Array.map snd
私はすべての行に出力を取得します。私はのようにのように、すべての行ではなく、10分の1または100分の1または1000の印刷を行います。だから無視され、コンソールに何も印刷していない、私は基本的に何もしないようにelse...
ブランチをしたい私は
x
|> Array.mapi (fun i n -> (i, n))
|> Array.map (fun (i, n) -> (if (i % 100 = 0) then printfn "Processing n %i" i, (n * 2)))
|> Array.map snd
を試してみたが、これは
The 'if' expression is missing an else branch. The 'then' branch has type
''a * 'b'. Because 'if' is an expression, and not a statement, add an 'else'
branch which returns a value of the same type.
でprintfn...
ビット以上のエラーを提供します。
は興味深いことに、この質問を書いてFSI
で物事をしようで、私はこれを試してみました:
x
|> Array.mapi (fun i n -> (i, n))
|> Array.map (fun (i, n) -> match (i % 100 = 0) with
| true -> printfn "Processing n %i" i, (n * 2)
| false ->(), n * 2)
|> Array.map snd
動作するように思われます。これは、コンソールテキストを提供する最善の方法ですか?
パーフェクト。これは私が上で持っていた 'match'ステートメントよりもあまり冗長ではありません!ありがとう。 – Steven