FSharp.Core.Printf モジュールについてのメモ
メモ。そのうち記事に昇格するかも。
間違っているかもしれないので、質問疑問指摘その他お待ちしております!
printf, printfn
System.Console.Out に書き込む。n がつく場合は書き込み後に改行。
fprintf, fprintfn
引数で渡された System.IO.TextWriter に書き込む。たとえば StreamWriter とか?
eprintf, eprintfn
System.Console.Error に書き込む。
sprintf
文字列返すやつ
bprintf
渡された StringBuilder に書き込む。
failwithf
最後に failwith に渡して例外を投げる。
kが頭文字につく関数とつかない関数
kbprintf と bprintf ってどういう違いがあるのという話。
PrintfEnv.Finalize 実行時に渡された関数を適用する。
k が付かない場合は、だいたいの関数が k*printf に ignore 関数を渡している。
StringFormat
書式を作る的な何か。
let fmt = Printf.StringFormat<string -> int -> string>("こんにちは、%sさん!今年は%d年です。") sprintf fmt "hoge" 2013 // => "こんにちは、hogeさん!今年は2014年です。"
設定ファイルから読み込んでsprintfに渡すとかできるようになります。
ちなみに、指定した型が間違っていたら実行時に例外を投げます。
BuilderFormat
StringBuilder に渡すための書式なので、返す型は unit。
let builder = StringBuilder() let fmt = BuilderFormat<string -> unit>("hogeさん、%s!") bprintf builder fmt "こんにちは" builder.ToString() // => "hogeさん、こんにちは!" |> ...
TextWriterFormat
TextWriter に渡すための書式なので、返す型は unit。
let fmt = TextWriterFormat<int list -> unit>("とりあえず中身を見る: %A") printfn fmt [1;2;3]
%A を含む文字列をFormatに渡したい
前述で書いている通り、渡したいものの型を書いておけばだいたい動くと思われます。
残り
あとでかく