说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

第一个F#入门程序Hello world

HTML文档下载 WORD文档下载 PDF文档下载
Visual Studio 2010 包含一种新的编程语言,它就是 F#。 F# 是一种多范例语言,它除了支持传统的面向对象的编程和 .NET 概念外,还支持函数编程。 本文介绍了它的一些功能和语法,演示如何声明简单变量,编写和测试函数,创建元组和列表,以及定义和使用类。

Visual Studio 2010 包含一种新的编程语言,它就是 F#。 F# 是一种多范例语言,它除了支持传统的面向对象的编程和 .NET 概念外,还支持函数编程。 下面的示例介绍了它的一些功能和语法。 该示例演示如何声明简单变量,编写和测试函数,创建元组和列表,以及定义和使用类。

 

创建新的控制台应用程序
在"文件"菜单上,指向"新建",再单击"项目"。
如果您在“模板类别”窗格中看不到 Visual F#,请单击“其他语言”,然后单击“Visual F#”。 中央的“模板”窗格将列出 F# 模板。
的顶部查找模板以确保 .net Framework 4显示在目标框架框中。
在模板列表中,单击“F# 应用程序”。
在“名称”中键入项目的名称。
单击“确定”。
新项目出现在“解决方案资源管理器”中。
使用 let 关键字声明和使用标识符
将以下代码复制并粘贴到“Program.fs”中。 您要将每个标识符(anInt、aString 和 anIntSquared)绑定到一个值。

创建新的控制台应用程序

 

1. 在"文件"菜单上,点"新建",再单击"项目"。

 

2. 如果您在“模板类别”窗格中看不到 Visual F#,请单击“其他语言”,然后单击“Visual F#”。 中央的“模板”窗格将列出 F# 模板。

 

3. 在顶部查找模板以确保 .net Framework 4显示在目标框架框中。

 

4. 在模板列表中,单击“F# 应用程序”。

 

5. 在“名称”中键入项目的名称。

 

6. 单击“确定”。

 

新项目出现在“解决方案资源管理器”中。

 

使用 let 关键字声明和使用标识符

 

将以下代码复制并粘贴到“Program.fs”中。 您要将每个标识符(anInt、aString 和 anIntSquared)绑定到一个值。

 

let anInt = 5let aString = "Hello world"// Perform a simple calculation and bind anIntSquared to the result.let anIntSquared = anInt * anInt
在 F# Interactive 窗口中查看结果
选择前面过程中的 let 表达式。
右击所选区域,然后单击“发送到 Interactive”。 另外,也可以按 Alt+Enter。
“F# Interactive”窗口将打开,并显示解释 let 表达式的结果,如下列代码行所示。 类型是从指定的值推断的。
val anInt : int = 5
val aString : string = "Hello world"
val anIntSquared : int = 25
在命令提示窗口中查看结果
1. 将下列代码行添加到“Program.fs”中。
System.Console.WriteLine(anInt)System.Console.WriteLine(aString)System.Console.WriteLine(anIntSquared)
2. 按 Ctrl+F5 运行代码。 将显示命令提示窗口,其中包含下列值。
5
Hello world
25
可以通过将鼠标指针停留在前面 WriteLine 语句中的标识符名称 anInt、aString 和 anIntSquared 上,验证推断的类型。
定义并运行函数
1. 使用 let 表达式定义一个求平方函数,如下面的代码所示。 该函数有一个形参 n,并返回发送到 n 的实参的平方。
let square n = n * n// Call the function to calculate the square of anInt, which has the value 5.let result = square anInt// Display the result.System.Console.WriteLine(result)
2. 按 Ctrl+F5 运行代码。 显示的结果为 25。
3. 递归函数需要 let rec 表达式。 下面的示例定义了计算参数 n 的阶乘的函数。

 

let rec factorial n =     if n = 0     then 1     else n * factorial (n - 1)System.Console.WriteLine(factorial anInt)
4. 按 Ctrl+F5 运行该函数。 显示的结果为 120,即 5 的阶乘。
创建集合:列表和元组
1. 聚合值的一种方法是使用元组,如下面的代码所示。

 

let turnChoices = ("right", "left")System.Console.WriteLine(turnChoices)// Output: (right, left)let intAndSquare = (anInt, square anInt)System.Console.WriteLine(intAndSquare)// Output: (5,25)

2. 聚合值的另一种方法是使用列表,如下面的代码所示。

 

// List of best friends.let bffs = [ "Susan"; "Kerry"; "Linda"; "Maria" ] 

通过使用“cons”运算符 (::),将新的好友添加到列表中。 请注意,该操作不更改 bffs 的值。 bffs 的值不可变,因此无法更改。

 

// Bind newBffs to a new list that has "Katie" as its first element.let newBffs = "Katie" :: bffs

使用 printfn 显示列表。 函数 printfn 显示结构化值中包含的各个元素。

 

printfn "%A" bffs// Output: ["Susan"; "Kerry"; "Linda"; "Maria"]printfn "%A" newBffs// Output: ["Katie"; "Susan"; "Kerry"; "Linda"; "Maria"]
3. 可以通过按 Ctrl+F5 或选择一段代码再按 Alt+Enter,查看结果。
创建和使用类
1. 下面的代码创建 Person 类,该类具有两个属性 Name 和 Age。 Name 为只读属性。 像函数编程中的大多数值一样,该属性的值不可变。 如果需要,可以在 F# 中创建可变值,但是您必须显式将其定义为可变。 在下面的类定义中,Age 的值存储在可变局部变量 internalAge 中。 可以更改 internalAge 的值。
// The declaration creates a constructor that takes two values, name and age.type Person(name:string, age:int) =    //  Person 对象的 age 值可变. 这使下面定义的 mutable变量internalAge也可变。    let mutable internalAge = age    // Declare a second constructor that takes only one argument, a name.    // This constructor calls the constructor that requires two arguments,    // sending 0 as the value for age.    new(name:string) = Person(name, 0)    // 只读属性    member this.Name = name    // 可读写属性.    member this.Age        with get() = internalAge        and set(value) = internalAge <- value    // 方法实例    // 增加person的age.    member this.HasABirthday () = internalAge <- internalAge + 1    // Check current age against some threshold.    member this.IsOfAge targetAge = internalAge >= targetAge    // Display the person's name and age.    override this.ToString () =         "Name:  " + name + "\n" + "Age:   " + (string)internalAge
2. 若要测试该类,请声明两个 Person 对象,进行一些更改,并显示结果,如下面的代码所示。
// The following let expressions are not part of the Person class. Make sure// they begin at the left margin.let person1 = Person("John", 43)let person2 = Person("Mary")// Send a new value for Mary's mutable property, Age.person2.Age <- 15// Add a year to John's age.person1.HasABirthday()// Display results.System.Console.WriteLine(person1.ToString())System.Console.WriteLine(person2.ToString())// Is Mary old enough to vote?System.Console.WriteLine(person2.IsOfAge(18))
将显示以下行。
Name: John
Age: 44
Name: Mary
Age: 15
False
查看 F# 教程中的其他示例
在"文件"菜单上,指向"新建",再单击"项目"。
如果您在“模板类别”窗格中看不到 Visual F#,请单击“其他语言”,然后单击“Visual F#”。 中央的“模板”窗格将列出 F# 模板。
在顶部查找 模板 以确保 .net Framework 4显示在目标框架 框中。
在模板列表中,单击“F# 教程”。
单击“确定”。
该教程将显示在“解决方案资源管理器”中。
本文来自微软网站。

 

修改Delphi 3图形处理中的错误 用Delphi 3.0编制MP3音乐点歌台 用Delphi编制MP3音乐点歌台 用Delphi编制趣味动画鼠标 用Delphi开发屏幕保护预览程序 用DEPHI3.0实现动画ABOUT窗口-Delphi资料 在Delphi下用Direct Sound 实现混音器组件 在Delphi中使用DirectX BDE的替代品大全(按数据库类型分)-Delphi资料 BDE的替代品大全(按应用类型分)-Delphi资料 bde的组态文件-Delphi资料 DBGrid中的下拉列表和查找字段编程方法-Delphi资料 Delphi 3.0 中 连 接 数 据 库 的 三 种 方 式 Delphi 3.0中连接数据库的三种方式 Delphi 4中开发数据库控件的方法 Delphi:MIDAS中动态强制约束编程 DELPHI 中 自 适 应表 单 的 实 现 Delphi3数据库编程中的查找字段 Delphi3中 连 接 数 据 库 的 三 种 方 法 Delphi编程实现3DS动画的播放 Delphi访问ODBC数据库 Delphi如何实现在一个Dbgrid中显示多数据库 Delphi筛选数据 Delphi数据集过滤技巧 Delphi数据库应用程序开发中图像数据 Delphi下的ADO Delphi在网络数据库中的应用 Delphi中多库关联查询 Delphi中建表 Delphi中数据文件路径的管理 ODBC中的同步与异步执行模式-Delphi资料 我和她在一起的话,会开心吗 请大家看看这条语句有什么错? 关于isdn在win2000下共享的问题 各位水友,有力的出力,没力的看看,拜托 请从位高手帮小弟解决一个棘手的问题……………………多谢!!!!!!! ALLTEC(荔枝)兄弟,兄弟我接帖太快 :( 請這邊來. ★★★ 救命啊! VC 用ODBC访问 Access 数据库的问题 guo->你在www.linuxforum.net中叫什么?有个guoemail是你吗? 软件发布:市场摊位租赁管理系统Ver1.0 软件发布:量和单位转换软件(免费版) 软件发布:五笔快打 在listview中的各个记录listitem中,有没有双击记录的事件 软件发布:伏羲服装鞋业购销存管理系统 软件发布:进销存商务管理pcft-jxc 征集各地童谣.唤醒儿时记忆! 今天我请客! 有关vb调用excel的问题! 有没有关于BDE的单独的分发程序? VB中报表预览打印能不能实现象EXCEL中一样的“按比例缩放”?如何实现? 单机版流量统计 关于Delphi6的安装问题 动态计算公式怎么实现?? 常用的英文字体是什么? 在通信过程中怎样做到防监听、防篡改? 各位大虾现欲用java开发一套网上投票表决系统 应该看什么书?用什么开发工具?(一定给分!) 关于winsock的问题,急急 怎样使用VB6中TREEVIEW控件? 我真的要疯了! 这里有很多Delphi6的控件! 如何在ASP中传递多个参数?displaymsg.asp?page=1在后面我还想加另外一个参数 有没有喜欢画漫画的? 如何得到ActiveX控件的窗口句柄 请问mif文件格式以及、读写方法?高分求解 sco unix的root口令忘了,谢谢. 在PowerBuilder中使用Microsoft Web浏览器控件 ,这个控件在ole中怎么没有啊? 急盼有人答复!!!!!! 急!急!编译exe时出现:link errors提示 具体提示:create of executable file failed? 小笨笨一问 年年岁岁花相似,岁岁年年人不同 VC++初学者的几个大烦恼!(苦呀,谁来拯救我这个VC小兵?) 请教在DELPHI中调用API发送EMAIL的问题!!!!! 有谁知道没有封闭25端口的美国ISP的地址信息??? 水园的过去现在未来 -- 座谈一下 哭笑沉默怒骂攻击噌分拉关系白脸黑脸等等都欢迎 高分求购速达软件单据编辑的DBGrid组件或设计思想! 发表一下意见,做报表用那个控件好 谁有对话框实现的计算器的源程序? 帮小弟看一下这段程序,不好意思,只有10分了 Delphi多线程有用吗? 初学JAVA,还有一些问题烦劳各位大侠指点? 请教一个c语言库函数问题? 动不动就谈"爱国"的人请进 已知角a等于,2角b,小a的余角的三倍等于角b的补角,求角a,b的度数, 2+2等于几? 3小时25分等于多少小时,怎么来的 已知一个角等于它的余角的一半,求这个角的度数 2+2等于几啊 8π-20 等于多少?怎么算, 一个角比它的余角大25°,求这个角的余角和补角的度数,急,23点以前教下我 25下午1点,25小时后是几号的几点? 用分数表示:25分钟=( )小时,2500克=( )千克 已知一个角的余角是它的余角的1/4,求这个角的度数? 第25小时怎么样 25分钟=( )小时 最简分数 如图,已知△ABC全等于△ADE,∠CAD=10°,∠DFB=90°,∠B=25°,求∠E与∠DGB的度数. 第25小时电影求求求, 2.15小时=?小时(用分数表示) 3小时15分=?小时 如图,已知△ABC全等于△ADE,且∠CAD=10°,∠D=25°,∠EAB=120°,求∠DFB和∠DGB的度数. 第25小时的结局他爸爸要载他去哪里?是帮他越狱?还是送进监狱? 45分钟=多少小时 用分数表示 如图10,已知△ABC全等△ADE,且∠CAD=10°,∠EAB=120°,求∠DFB和∠DGB的度数 如果一天不是24小时 是25小时,一小时是70分钟 你会怎么办? 正切1度29分是多少 以现在来计算,1元人民币等于多少泰铢~还有如果在泰国吃一个普通快餐大概需要多少泰铢~因为迟一点我去泰国玩,所以必须问清楚, 黄金一盎司等于多少克 正切根3是45度,那么正切根2是多少度呢 1角8分等于几元 一盎司等于多少克黄金? 正切45是多少 1角等于多少平方米 一盎司黄金等于多少克 15.8°化成度 分 秒 1°等于几分 一盎司黄金等于多少克黄金? 8/15-1/4= 一元等于几分呢? 黄金1斤等于多少两 0.8,里面有( )1/15 超难的小学六年级数学题根据2/3=1-1/3,2/15=1/3-1/5,1/3+1/15=(1-1/3+1/3-1/5)*1/2,1/a(a+n)=(1/a-1/a+n)*1/n 求1/4+1/28+1/70+1/130等于多少 1块等于几分几毫几里 1港两黄金等于多少克 题是这样的:有五只猴子,他们去摘桃子,把摘来的桃子放在一起了,晚上第一只猴子想起来要分,就把这堆桃子平均分为了5份,还剩一个,他就给吃了,过了一会,第二个猴子想起来了,又把第一只猴 1+1等于几多 1盎司黄金等于多少克 超难小学六年级奥数题 如果1+2=2+1 那么我爱你等于你爱我么 怎样理解为公司节约一分钱就等于为公司挣得一分钱? 一个长方体的木料,长1米,将其截成三段变成三个小长方体.表面积比原来增加20平方分米.原来木料体积是多少? 如果1+1=2,那么你爱我是不是等于我爱你? 一分钱等于多少百元 解比例:4:5=(x+5):10简算题:11*11*11-11*11-10 36*1111+8888*8大哥大姐帮帮忙!1 如果1+2=2+1,那么我爱你就等于你爱我吗?付出就会有回报吗? 请问多少“厘”等于一分钱? 某市居民生活用电基本价格为每度0.40元若每月用电量超过a度,则超过部分按基本电价的70%.(1)某用户5月份用电84度共交电费30.72元,求a的值.(2)若电费平均每度0.36元,6月份用电多少度某市 1+2=2+1那么是不是我爱你,也等于你爱我 中国一厘钱等于多少元?多少分? 某市居民生活用电基本价格为每度0.40元若每月用电量超过a度,则超过部分按基本电价的70%.(1)某用户5月份用电84度共交电费30.72元,求a的值.(2)若电费平均每度0.36元,6月份用电多少度某市 如果1+2=2+1 那么我爱你是不是等于你爱我 一分等于几时 已知角A=2角B,角A的余角的3倍等于角B的余角,求角A,角B的度数 2+2到底等于几呢 14小时35分等于几小时
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn