- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
F# 20分钟快速上手(一)第一篇,从零开始编写我们的第一个F#程序。什么是F#,我为何要学它?F#是一种.NET平台上的函数式编程语言。就像C#和VB.NET,F#可以利用.NET的核心类库,如WPF,WCF,VSTO等等,通过F#您甚至可以使用XNA编写XBox游戏。仅仅如此并不意味着您应该去学习它。那为何要使用F#呢?作为一种函数式编程语言,F#使得某些领域的编程要比命令式编程(如使用C#)更为容易。并行编程(Parallel Programming)和面向语言编程(Language-Oriented Programming)是其中的两个领域。如果您曾经编写过.NET应用程序,并感觉自己在努力使用手头的语言表达自己的想法,也许F#就是您在寻找的。上路首先得下载(F#的最新版本1.9.4.19)和安装。安装程序会在VS2005和VS2008中安装F#的项目系统(项目模板和项模板)。先来创建一个新的F#项目。然后添加一个新的F#源文件。默认条件下,新建的源文件包含了很多“教学”代码,全部删除,然后输入下面的代码:#lightlet?square?x?=?x?*?xlet?numbers?=?[1?..?10]let?squares?=?List.map?square?numbersprintfn?N^2?=?%A?squaresopen?SystemConsole.ReadKey(true) 按下F5运行程序,您会看到:这些并没有太多让人兴奋的。我们来逐行的分析下代码,看看到底有什么不同之处,在此之前先介绍下VFSI。Visual Studio中的F#交互(Interactive)F#交互控制台(F# Interactive Console, FSI)采用的是“REPL loop”模式,即Read-Evaluate-Print-Loop。也就是输入一段代码,编译并执行,然后输出结果。通过它您可以快速地开发和测试程序。要在VS中启用FSI,打开Add-in Manager窗口。选中“F# Inactive for Visual Studio”。然后,选中程序的前两行代码:接着按下Alt+Enter(实际上,如果FSI还么有打开,需要按两次Alt+Enter)。这时会看到出现了一个工具窗口:我们刚才做的事情是将代码片段直接发送给FSI会话,FSI将结果输出。结果是函数“square”的定义,它接受int类型参数,返回类型也是int。接下来在FSI窗口输入“List.map square [1 .. 2 .. 10];;”。“;;”是告诉FSI停止阅读程序,立即进行求值。?List.map?square?[1?..?2?..?10];;val?it?:?int?list?=?[1;?9;?25;?49;?81] 现在我们可以方便地通过FSI来学习F#了,马上来看看我们的程序究竟做了什么吧。不过仍建议您在VS源代码编辑器中输入代码,使用“Select(原文是Highlight,感觉Select更贴切) + Alt + Enter”将代码片段发送至FSI。语言基础#light(OCaml兼容)F#源自OCaml,具有交互编译OCaml的能力,也就是可以不经修改即可编译简单的OCaml程序。这种能力也带来了令人讨厌的语法。#light(发音为hash-light)是一个编译器指令,可以简化F#的语法。强烈建议您保持使用#light,您会发现,在大多数F#代码片段中要么会声明它,要么是假定已经声明了它。 let square x = x * x(类型推演)?这行代码定义了一个函数:square,它会求得数字x的平方。考虑一下C#中等价的代码:public?static?int?square(int?x){?return?x?*?x;}在C#中,您需要制定参数和返回值的类型信息,而F#则帮您搞定了。这种行为称为类型推演(Type Inference)。从函数的签名,F#可以知道“square”函数接受一个参数“x”,并且函数返回“x * x”(在函数体内的最后一次求值将作为返回值,因此无须return关键字)。因为很多基元类型都支持*操作,比如byte,uint64,double等,F#默认会使用int类型,有符号的32位整数。现在考虑下面的代码,它为其中的一个参数提供了“类型注解(type annotation)”,告诉编译器期望的类型。因为x标为“string”,“+”操作只定义在两个string间,因此y也必须为string类型,返回值是两个字符串拼接的结果。?let?concat?(x?:?string)?y?=?x?+?y;;val?concat?:?string?-?string?-?string?concat?Hello,??
您可能关注的文档
最近下载
- 13J104建筑工程.房屋建筑.蒸压加气混凝土砌块、板材构造.pdf VIP
- 2014地铁车站防火封堵设计要求基础介绍.doc VIP
- 《BIM建模技术》教案——5创建结构板.docx VIP
- 企业人力资源管理师(三级)真题及答案.docx VIP
- 面向设计的地铁车站防火安全韧性评价_夏侯遐迩.pdf VIP
- 2025花城版音乐三年级上册《我爱米兰》课堂教学设计.docx
- 《BIM建模技术》教案——4创建梁.docx VIP
- 2025年最新党员领导干部廉洁自律知识竞赛题库附带答案.docx VIP
- 管道支架重量估算表(超全,超好) (2).xls VIP
- IE七大手法培训资料.pptx VIP
原创力文档


文档评论(0)