Sends for the fellow dear visitors:
Welcome to DongPad!
F#有强大的类型推理(type inference),所以在F#中不需要我们显示指定参数类型。如 let add p1 p2 = p1+p2;; 这样我们就定义了接收两个int类型参数返回int类型的一个add函数:val add : int -> int –> int,这个推理过程是由f#编译器完成的。
因为F#不使用隐式类型转换,所以如果我们对add传入float类型参数,如:add 100.0 200.0,编译将产生如下错误:
stdin(46,5): error FS0001: This expression has type float but is here used with type int
因此这里需要显示指定参数的类型,方式如:let add2 (p1:float) p2 = p1+p2;; 这样编译器推理出add2函数接受两个float类型参数并返回float类型:val add2 : float -> float -> float。虽然在这里没有显示指定add2的p2参数类型,但是因为显示指定了F#的第一个参数为float类型,p2自然也就被推理为float类型了。因此如果有不同类型的参数,应该为这些参数都显示指定类型,add3接受一个float和一个int类型参数,并返回两个参数的连接形式string:let add3 (p1:float) (p2:int)=(string p1)+(string p2),编译器编译结果为:val add3 : float -> int -> string,在这里要注意的就是(string p1),它的意思是对p1进行强制转换。
积硅步以至千里。
Tags: DongPad F#
打印函数主要有三个:printf、printfn和sprintf。
printf将参数打印到控制台窗口中。printfn将参数打印输出并且换行。
打印函数可以使用下面这些格式指示符:
%O格式指示符会将对象进行装箱操作,并调用Object.ToString函数。%A的运作方式相同,但是在调用Object.ToString之前会检查[]属性指定的任何特殊打印选项。 PS: 紧接着的是来自官方的解释,从侧面说明了 printfn "%O" false (结果为False)与 printfn "%A" false(结果为false)的区别 %O 设置通过将对象装箱并使用其 ToString 方法来打印的任何值的格式。 %A 设置使用默认布局设置打印的任何值的格式。
%O格式指示符会将对象进行装箱操作,并调用Object.ToString函数。%A的运作方式相同,但是在调用Object.ToString之前会检查[]属性指定的任何特殊打印选项。
PS: 紧接着的是来自官方的解释,从侧面说明了 printfn "%O" false (结果为False)与 printfn "%A" false(结果为false)的区别
%O 设置通过将对象装箱并使用其 ToString 方法来打印的任何值的格式。
%A 设置使用默认布局设置打印的任何值的格式。
sprintf用于输出的目标为一个字符串的情况。
节选自:CC682,更多格式请参考官方Core.Printf的%[flags][width][.precision][type]详解
Tags: DongPad F# 占位符
Tags: F# DongPad
Powered By DongPad CopyRight 2008-2009, xhtml | css
Processed in 0.046 seconds(s) , 沪ICP备08111450号