输出I/O执行结果到控制台最简单的方法就是使用printf函数家族了。printf这类函数一共包括三个主要方法:printf,printfn,和sprintf。
使用printf输出到屏幕是直接输出。
例如:
View Code
1 printf "Hello";;
将输出:Helloval it : unit () [以上是在F#Interactive窗口输出,以后如果不加特别说明都将在此窗口输出]
使用printfn输出到屏幕时将先添加一空行,然后再输出
例如:
View Code
1 printfn "World";;
将输出:World
val it : unit ()
那么如果两个一起用:printf "hello"
printfn "world";;
将会输出:hello world
需要说明一点的是,虽然.NET System.Console类常用来输出文本,但是printf函数显然更合适,因为他的参数是强类型,这有利于类型推断。
输出文本到控制台显示并不让人兴奋,但printf添加了很多强大的具体格式化和内嵌检查的重载。看下面的例子。
>let mountain = "K2"
let height = 8611
let units = 'm';;
//回车后输出:
val mountain : string = "K2"
val height : int =8611
val units : char = 'm'
>printfn "%s is %d %c high" mountain height muits;;
//输出:
K2 is 8611m high
val it : unit = ()
当使用F#的类型推断系统时,如果数据和所给的格式化说明符不匹配,编译器将报错。
看下面的例子:
1 >printfn "An integer = %d" 1.23;;
2 //执行这名代码时会报错。
3 'float'和类型byte,int16,int32,int64,sbyte,uint16,uint32,uint64,nativeint,unativeint
4 ,arising等等不匹配
另外,由于F#编译器知道如何给格式化说明符一系列所期望的类型,类型推断系统能够约束值的类型。
看例子:
1 >let inferParams x y z=
2 printfn "x = %f, y = %s, z = %b" x y z;;
3 //类型为:
4 val inferParams : float -> string -> bool -> unit
5
6 //因为格式化时为x指定了%f,所以推断的float,后两个同理
以上介绍了printf和printfn的用法。下面是sprintf.
(sprintf比较简单,前面带了个s,就说明类型应该是string类型,当然这是我的理解。)
1 >let location = "World";;
2 //输出:
3 val location : string
4 >sprintf "Hello,%s" location;;
5 //输出:
6 val it : string = "Hello World"
以前就是F#中的基本输出类型。
敬请期待下一篇的F#程序剖析