printfn相當於,因爲我研究與F#(尤其是使用F#的互動),我想有切換的「打印時,在調試」功能。如何定義在F#
我可以做
let dprintfn = printfn
F#交互式說
val dprintfn : (Printf.TextWriterFormat<'a> -> 'a)
,我可以使用
dprintfn "myval1 = %d, other val = %A" a b
每當我想在我的腳本。
現在,我想定義dprintfn
不同,因此,它會忽略所有它的參數又是語法兼容printfn
。怎麼樣?
最接近(但非工作)變種我已經記:
let dprintfn (arg: (Printf.TextWriterFormat<'a> -> 'a)) =()
,但它下面無法編譯,然後dprintfn "%A" "Hello"
,導致error FS0003: This value is not a function and cannot be applied
。
P.S.我目前使用Debug.WriteLine(...)
的別名作爲解決方法,但這個問題對於F#的類型系統的替換仍然很有趣。
這工作,謝謝。但是如果你知道'printfn'的類型以及如何用相同的簽名定義你自己的func,那將是非常有趣和有用的。 (或者......確實F#對待'以特定的方式printfn',不只是像任何其他功能?) – 2012-04-28 17:47:55
字符串常量是隱式轉換爲這種類型:http://msdn.microsoft.com/en-us/library/ ee370359.aspx這是魔術的地方。 – Brian 2012-04-28 20:01:25
F#編譯器特別支持'printf'格式化的字符串以及與它們關聯的類型的靜態分析。 'kprintf'是在你自己的功能中利用它的標準方式。 – yamen 2012-04-28 21:30:05