F#教程(一)——————F#语言概述

本文介绍了F#,一种结合函数式与面向对象特性的编程语言。文章通过示例展示了如何使用F#进行基本编程操作,包括变量声明、函数定义、集合创建以及类的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

F#是一种简洁、高效、富于表现性的函数式的及面向对象的程序设计语言。它是基于Ocaml的,而Ocaml是基于ML函数程序设计语言的。

F#自2002年开始研发,2005年发布了第一个版本,2007年底正式从研发专案转移至产品部门,并决定将F#置入Visual Studio.NET 2010。截止目前(2009年1月6日现在),最新的F#预览版为F# September 2008 CTP,版本号为1.9.6.2。

 

F#也许终将成为程序核心部分设计的首选,而C#与VB等将在用户界面交互设计方面继续发挥其强大的潜力。

 

更多详细介绍可以去微软F#研究中心网站上浏览到:

http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/default.aspx

 

 

下面我们初步感受一下F#语言:

 

1。我的IDE环境是vs2010beta2,首先我们在vs中新建一个F# Application的工程。F#新建之后源文件是一片空白,可能看惯了C#的看着这个还真有点不习惯这么空,我刚开始就是。F#的源文件后缀名为.fs。

 

2。老一套,来一段hello world!输入代码:     

 

 

System.Console.WriteLine("hello World!")             

 

 

按Ctrl+F5运行一下看看。

 

使用关键字let申明变量,及变量的使用

 

let anInt = 5                                 
let aString = "Hello"                         
// 下面是通过计算将值赋给anIntSquared         

let anIntSquared = anInt * anInt              

 

我们可以将这段代码选中,点击鼠标右键选择Send to Interactive可以在vs下面的交互窗口看到上面代码的赋值结果

 

 

 

 

val anInt : int = 5
val aString : string = "Hello"
val anIntSquared : int = 25

 

最后我们还是利用命令将他们在程序结果里面输出吧,输入以下代码:

 

System.Console.WriteLine(anInt)               
System.Console.WriteLine(aString)             
System.Console.WriteLine(anIntSquared)
    

按Ctrl+F5运行以下,我们就可以看到结果了。
定义和使用函数
依然是利用关键字let来定义函数的,下面我们定义一个函数,输入代码:
//square就是函数名,n是它的一个参数,该函数完成的任务就是求平方
let square n = n * n
下面我来调用这个函数,输入代码:
//i是存放结果的变量,anInt是上面我们定义的变量,值为5,计算结果为25
let i=square anInt
最后我们输出这个i来看看:
System.Console.WriteLine(i)

注意:是递归函数的要加关键字let rec,不然的话会在函数调用内部提示你该函数未定义,下面定义的是一个递归函数:
let rec factorial n = 
    if n = 0
    then 1
    else n * factorial (n - 1)
System.Console.WriteLine(factorial anInt)
创建集合:数组及lists的使用
数组一般这样进行定义的:
let point=(1,2,5)
System.Console.WriteLine(point)
不过F#里的数组还可以不同类型的值都放一起,比如这样使用也可以
let dataB = (1, "fred", 3.1415)
System.Console.WriteLine(dataB)
再介绍另外一种集合类型list
let pointB=[1,3,5]
System.Console.WriteLine(pointB)
相对数组而言只是定义的时候用中括号来代替小括号了,但list用途相对数组更灵活,比如可以这样来定义一个从1到10的整数集合
let dataC=[1..10]
System.Console.WriteLine(dataC)
这是你按Ctrl+F5可能会发现我们的dataC列表并没有全部输出,但没关系,1到10的整数的的确确已经存进dataC里了,我们换个
输出方式可以看到,
printfn "%A" dataC
关键字printfn也是一个输出语句,不过它只能输出单个变量的值或者结构
定义及使用类
下面我们来定义一个类
type MyClass(name:string,age:int)=
    //使用mutable关键字可以定义局部的值可变的变量
    let mutable internalAge = age
    //此处相当于再定义一个只传一个参数的构造函数,只有一个name参数时,第二个参数默认为0
    new(name:string)=MyClass(name,0)
    //member关键字用来声明类中的属性,方法,事件等作用
    //这里是进行属性的定义,就跟C#里属性定义差不多,以下是定义一个只读的属性
    member this.Name = name
    //这里是定义一个可读可写的属性
    member this.Age
        with get() = internalAge
        and set(value) = internalAge <- value
    //这是定义一个方法
    member this.HasABirthday () = internalAge <- internalAge + 1
    //检查当前年龄和目标年龄谁大
    member this.IsOfAge targetAge = internalAge >= targetAge
    //重载ToString()函数,用来显示结果
    override this.ToString () =
        "Name:  " + name + "/n" + "Age:   " + (string)internalAge
我们将这个类进行实例化看下运行结果
//类的实例化
let MyClass1 =MyClass("heqichang",24)
let MyClass2=MyClass("momo")
//使用这种方法来给变量赋值
MyClass2.Age <- 15
//调用类中的方法
MyClass1.HasABirthday()
//输出结果
System.Console.WriteLine(MyClass1.ToString())
System.Console.WriteLine(MyClass2.ToString())
System.Console.WriteLine(MyClass2.IsOfAge(18))
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值