F#学习(二)

  接着上一篇,继续开始我们的F#旅程。今天我们依然采用VS2010来演示F#。

  先建立一个F#的项目,在编辑区鼠标右键选择打开F# Interact ive,我们可以在VS运用fsi.exe的所有功能,也可以如同SQL一样选择语句执行。

F#学习(二)_第1张图片

  首先我们看到上面的提示#help,我们可以直接在 F# Interactive中输入

  
  
#help;;

  就出现了如下图:

F#学习(二)_第2张图片

  前3个很明显是控制DLL文件和FS文件的动态加载,time是一个很有趣的东西,开启之后在语句快运行时都会有相关的性能指数

  Real: 00:00:00.003, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0

的显示,很方便我们对程序的性能作出判断。

 

  好了,前面的简单介绍过后,我们开始正式编写代码了:

 

  
  
1 > let int = 1
2 let double = 1.0
3 let float = 1.0f
4 ;;
5
6 val int : int = 1
7 val double : float = 1.0
8 val float : float32 = 1.0f

 

  1-4行是输入,6-8行是结果。我们发现作为C#关键字的int、double、float在F#中不再是关键字了。而通过结果我们可以看到,F#实际上也是一门强类型的语言,上面声明的3个标识符都有明确的类型。这种类型推导技术大家应该并不陌生,C#3.0的关键字var也正是使用了这种技术。

  了解了类型推导之后,我们接着来看F#的列表推导:

 

代码
   
   
1 > let list = [ 1 .. 10 ]
2 let list0 = [ ' A ' .. ' Z ' ]
3 let list1 = [ 0 .. 3 .. 30 ]
4 let list2 = [ 9 .. - 1 .. 0 ]
5 let list3 = [ for x in 1 .. 10 -> x * x];;
6
7 val list : int list = [ 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ; 10 ]
8 val list0 : char list =
9 [ ' A ' ; ' B ' ; ' C ' ; ' D ' ; ' E ' ; ' F ' ; ' G ' ; ' H ' ; ' I ' ; ' J ' ; ' K ' ; ' L ' ; ' M ' ; ' N ' ; ' O ' ;
10 ' P ' ; ' Q ' ; ' R ' ; ' S ' ; ' T ' ; ' U ' ; ' V ' ; ' W ' ; ' X ' ; ' Y ' ; ' Z ' ]
11 val list1 : int list = [ 0 ; 3 ; 6 ; 9 ; 12 ; 15 ; 18 ; 21 ; 24 ; 27 ; 30 ]
12 val list2 : int list = [ 9 ; 8 ; 7 ; 6 ; 5 ; 4 ; 3 ; 2 ; 1 ; 0 ]
13 val list3 : int list = [ 1 ; 4 ; 9 ; 16 ; 25 ; 36 ; 49 ; 64 ; 81 ; 100 ]

 

  如果你需要对集合元素筛选,突然发现

 

  
  
let evens = [ for x in 1 .. 10 when x % 2 = 0 -> x];;

 

  提示语法错误,这是因为在VS2010中F#对语法方便做了修订,现在需要实现这样的功能要采用下面的写法

 

  
  
let evens = [ for x in 0 .. 10 do if x % 2 = 0 then yield x];;

可以参考这里

  (今天写了3个小时才写了这么点,看来写Blog也是体力活呢。通过上面可以看到F#给我们的编程带来了便捷的方式,我要再接再厉继续写下去。)

你可能感兴趣的:(F#)