2
A
回答
2
我不認爲有一種方法可以攔截printfn "%A"
對於由類型提供程序(不能修改)生成的現有類型的行爲。如果您可以修改類型提供程序,那麼可以將其更改爲爲生成的類型生成StructuredFormatDisplay
屬性,但這不可能用於SqlDataConnection
。
如果您在F#Interactive中使用它,那麼您可以使用fsi.AddPrintTransformer
來定義當計算結果爲某個值時如何打印各個值。例如:
// Using Northwind database as a sample
type DB = SqlDataConnection<"Data Source=.\\SQLExpress;Initial Catalog=Northwind;...">
let db = DB.GetDataContext()
// A simple formatter that creates a list with property names and values
let formatAny (o:obj) =
[ for p in o.GetType().GetProperties() ->
p.Name, p.GetValue(o) ]
// Print all Northwind products using the formatter
fsi.AddPrintTransformer(fun (p:DB.ServiceTypes.Products) ->
formatAny p |> box)
// Take the first product - will be printed using custom formatter
query { for p in db.Products do head }
指定PrintTransformer
當你的價值在F#互動的結果纔會被使用。當您爲返回多個對象的查詢編寫query { .. } |> List.ofSeq
時,它也會起作用。但對於printfn "%A"
,您必須明確地調用轉換函數(如formatAny
)...
相關問題
- 1. F#YAML類提供商
- 2. F#類型提供者
- 3. 問題與F#的R型提供商
- 4. 如何連續F#WMI類提供商
- 5. 如何生成的F#類型提供
- 6. F#WsdlService類型提供程序代理
- 7. Azure和F#3.0類型提供程序
- 8. F#WSDL類型提供程序和Confluence
- 9. F#wsdl類型提供程序錯誤?
- 10. F#類型提供程序和REST API
- 11. F#類型提供的SQL Server實例
- 12. 使用F#類型提供實例類型,並提供它們的屬性
- 13. 打印大型列表,F#
- 14. 類提供商和大型XML文件
- 15. 提供商媒體類型匹配?
- 16. 類型不提供電話運營商
- 17. F#類型提供程序引用自定義類型
- 18. F#XML類型提供程序和可選類型
- 19. 在F#類型提供程序中發送生成的類型
- 20. F#實體類型提供類型範圍
- 21. F#的JSON類提供商:讓行/列名
- 22. Boost是否提供打印uBLAS數據類型的功能?
- 23. 提供打印功能4
- 24. F#類中的SQL類型提供程序
- 25. 擴展服務提供商(提供商)
- 26. 類型供應商不提供.NET 2.0/3.X?
- 27. 提供類型供應商的便攜式庫
- 28. F#SQL類型提供程序 - 爲什麼不提供所有存儲過程?
- 29. GPS提供商不提供
- 30. 我可以提供一個類型作爲F#中的類型提供者的輸入嗎?
您是否嘗試使用'StructuredFormatDisplay'屬性註釋類型提供程序? – bytebuster