2011-07-08 105 views
1
> (1, 2, 3);; 
val it : int * int * int = (1, 2, 3) 

> printfn "%d" (1, 2 ,3);; 

    printfn "%d" (1, 2 ,3);; 
    --------------^^^^^^^ 

stdin(2,15): error FS0001: The type '('a * 'b * 'c)' is not compatible with any of the types byte,int16,int32,int64,sbyt 
e,uint16,uint32,uint64,nativeint,unativeint, arising from the use of a printf-style format string 

如何在不创建附加功能的情况下打印此类型?如何打印int * int * int类型

回答

5

您可以打印任何类型的格式%A:

printfn "%A" (1, 2, 3);; 

否则,你将需要解压你的元组打印出来,因为没有具体的元组格式化。

+2

只需添加,如果您尝试使用某种大型递归数据结构,“%A”将会变慢。因为这会使用反射来导航数据结构并打印结果 – Ankur