рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд╛рда рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ F # рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред
рдЪреВрдБрдХрд┐ F # рдПрдХ .NET рд▓реИрдВрдЧреНрд╡реЗрдЬ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╣рдореЗрд╢рд╛ Console.WriteLine (..) рдФрд░ String.Format (..) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╣рдо рдЕрдкрдиреЗ рдирд┐рдпрдорд┐рдд .NET рдХреЛрдб рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд╡рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, F # рднреА рдЕрдзрд┐рдХ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдЬреИрд╕реА C рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ Core.Printf рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред Console.WriteLine (..) .NET рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорддреБрд▓реНрдп F # рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд┐рдВрдЯрдлрд╝рди рд╣реИ, рдЬреЛ рдХрд┐ F # рдореЗрдВ рдкрд╛рда рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рд╣реИред
Printfn Console.WriteLine (..) рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХреНрдпреЛрдВ рд╣реИ?
Printfn рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВ, рдХреБрдЫ рдореБрдЦреНрдп рдХрд╛рд░рдг рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣реИрдВ:
- рд╕реНрдЯреЗрдЯрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдЗрдВрдЯ рдорд╛рди рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреА рдЬрд╛рдПрдЧреА
- рдЪреВрдВрдХрд┐ рдкреНрд░рд┐рдВрдЯрдлреЗрди рдПрдХ рджреЗрд╢реА рдПрдл # рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдПрдл # рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣ рд╣реА рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
// printfn "should be a decimal value %d" "cat" // printfn "should be a decimal value %d" 42 // , Console.WriteLine("should be a decimal value {0}" , "cat") // printfn "this only expected 1 arg of type decimal %d" 42 "dog" // , Console.WriteLine("this only expected 1 arg of type decimal {0}" , 42, "dog") // , printfn "this only expected 2 args of type decimal %d and string %s" 42 "dog"
рдпрджрд┐ рдЕрдм рд╣рдо Visual Studio IDE рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЬрд┐рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреА рдереА, рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИрдВ:

рдкреНрд░рд┐рдВрдЯрдлрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?
рд╢рд╛рдпрдж рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХреБрдЫ рдорд╛рдирдХ рдлреЙрд░реНрдореЗрдЯрд░реНрд╕ рдХреЛ рджреЗрдЦрдХрд░ рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдирд┐рдореНрди MSDN рддрд╛рд▓рд┐рдХрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдорд╛рдирдХ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ
рджрд┐рдЦрд╛рддреА рд╣реИ :
msdn.microsoft.com/en-us/library/ee370560.aspxрддреЛ рдорд╛рдирдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдорд╣рд╛рди рд╕реНрд╡рд░реВрдкрдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рддреЛ, рдЕрдм рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рд┐рдВрдЯрдлрди рдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛), рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡реИрд▓реНрдпреВ рдХреЛ рдПрдХ рд╕реБрдВрджрд░ рд╕реНрд╡рд░реВрдкрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХреБрдЫ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рд╣реИ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧрдмрд░реНрд▓ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯрд╡рд┐рдЯрд░ рдкрд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдПрдл # рдпрд╣ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ?
рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╣реИ, рдЖрдкрдХреЛ Core.Printf рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдорд┐рд▓реЗрдВрдЧреАред рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп рдкреВрд░реА рд╕реВрдЪреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереА:
рд╕реВрдЪреАBringf StringBuilder рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред
eprintf рдкреНрд░рд┐рдВрдЯреНрд╕ рдиреЗ рд╕реНрдЯреЗрдЯрд░реНрд░ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ред
eprintfn рдкреНрд░рд┐рдВрдЯреНрд╕ рдиреЗ рдирдИ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╕реНрдЯреИрдбрд░реНрд░ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ред
failwithf рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдлрд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рджреНрд╡рд┐рддреАрдпрдХ рдкреНрд░рд┐рдВрдЯрд░ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдкрд╛рда рдЫрд╛рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯ рдкреНрд░рд┐рдВрдЯред
рдПрдХ рдирдИ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдХрд░ рдЯреЗрдХреНрд╕реНрдЯ рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯ рдкреНрд░рд┐рдВрдЯред
kbprintf bprintf рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред Kprintf рджреЗрдЦреЗрдВред
kfprintf fprintf рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред Kprintf рджреЗрдЦреЗрдВред
kprintf рдкреНрд░рд┐рдВрдЯрдл рдХреА рддрд░рд╣, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдЪреИрдирд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореБрджреНрд░рдг рдХреЛ рдмрд▓-рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдирд╣реАрдВред
kspintf рд╕реНрдкреНрд░рд┐рдВрдЯрдл рдХреА рддрд░рд╣, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред Kprintf рджреЗрдЦреЗрдВред
рдкреНрд░рд┐рдВрдЯрдл рдкреНрд░рд┐рдВрдЯреНрд╕ рдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ред
рдкреНрд░рд┐рдВрдЯрдлрд╝рди рдкреНрд░рд┐рдВрдЯреНрд╕ рдиреЗ рдирдИ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред
рдЖрдВрддрд░рд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЯрдл рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рджреНрд╡рд┐рддреАрдпрдХ рдкреНрд░рд┐рдВрдЯрд░ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЗрд╕ рд╕рдм рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдмрд╕реЗ рдЖрдо рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдБрдЧрд╛:
bprintf
StringBuilder рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯред
let builder = new StringBuilder(524288) Printf.bprintf builder "This will be a string line : %s\r\n" "cat" Printf.bprintf builder "This will be a bool line : %b\r\n" true Printf.bprintf builder "This will be a int line : %u\r\n" 42 Printf.bprintf builder "This will be a hex line : %X\r\n" 255 printfn "%s" (builder.ToString())
рдпрд╣ рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ F # рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рджреЗрдЧрд╛
fprintf
рдПрдХ рдкрд╛рда рд▓реЗрдЦрдХ рдореЗрдВ рдкреНрд░рд┐рдВрдЯред
use sw = new StreamWriter(@"c:\temp\fprintfFile.txt") fprintf sw "This is a string line %s\r\n" "cat" fprintf sw "This is a int line %i" 10 sw.Close()
рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдг рд╣реЛрдЧрд╛

sprintf
let result = Printf.sprintf "This will return a formatted string : %s\r\n" "cat" printfn "%s" result
