在Visual Studio中入门F#
一、写在前面的话
个人由某方面的兴趣需要学习 F#,网络上有关F#的中文资料很少,微软官方有很不错的文档,但是很可惜的是绝大部分的章节都是英文的。个人是一位.NET爱好者,想自己将 F# 的官方文档翻译出来,算是为了自己喜欢的 .NET 做一些贡献。
二、原文链接
Getting started with F# in Visual Studio
三、在这篇文章中
- 安装 F#
- 创建一个控制台应用程序
- 编写您的代码
- 运行您的代码
- 使用 F# Interactive
在 Visual Studio IDE 中支持 F# 和 Visual F#。在开始前,如果您还没有下载 Visual Studio 的话,我们应该先下载它。本文使用 Visual Studio 2017 Community 版本,您当然可以用您选择的版本来使用 F#。
四、开始
1. 安装 F#
如果您是第一次下载 Visual Studio, 它将首先安装 visual studio 安装程序。从安装程序中安装任何版本的 Visual Studio 2017。如果已经安装了它, 请单击 "修改"。 接下来将看到工作负载列表。您可以通过以下任一工作负载来安装 F#:
| Workload | Action |
|---|---|
| .NET desktop development | Select F# language support from the right-hand side |
| ASP.NET and web development | Select F# language support from the right-hand side |
| Data storage and processing | Select F# language support from the right-hand side |
| Mobile development with .NET | No action - F# is installed by default |
最后, 单击右下方的 "修改"。这将安装您所选择的所有内容。然后, 通过单击 "启动", 就可以使用支持 F# 语言的 Visual Studio 2017 了。
2. 创建一个控制台程序
控制台应用程序是 Visual Studio 中最基本的项目之一。这里介绍怎样创建它。 打开 Visual Studio :
- 在“文件”菜单下,选择“新建”,然后选择“项目”。
- 在新建项目对话框中,我们应该能在“模板”区域内看到 Visual F#。选择该项以显示F#的模板。
- 选择“确定”按钮创建 F# 项目!你现在应该能在“解决方案资源管理器”中看到一个F#项目。
3. 编写您的代码
让我们立即开始写一些代码吧。请确保该程序. fs 文件已打开, 然后用以下内容替换它:
module HelloSquare let square x = x * x [<EntryPoint>]
let main argv =
7 printfn "%d squared is: %d!" (square )
// Return an integer exit code
在前面的代码示例中,定义了一个函数square,它需要一个输入 x,然后将它与自身相乘。因为 F# 使用类型推理,因此不需要指定 x 的类型。F# 编译器了解可使乘法有效的类型,并根据 square 被调用的情况来为 x 赋予合适的类型。如果你将鼠标悬停在 square,你应该能看到如下内容:
val square: x:int -> int
这就是函数类型签名。它可以这样理解“square 是一个函数,它需要输入一个整数 x,然后产生一个整数”。请注意,编译器赋予当前的 square int 类型——这是因为并不是所有类型都能进行乘法操作,能够进行乘法操作的类型所构成的集合是一个封闭的集合。当前 F# 编译器选择 int,但是如果您调用 square 再传入一个不同类型的输入,例如 float,它将调整类型签名。
另一个定义的函数main,使用 EntryPoint 特性来告知编译器应该从哪里开始执行程序。它遵循与其他C语言风格的编程语言相同的约定,该函数可以接收命令行参数,会返回一个整数(通常为0)。
在这个函数中,我们调用 square 函数传入参数 12。然后,F# 编译器将赋予 square 的类型为 int -> int(表示这样的一个函数,输入 int 后产生一个 int)。printfn 是一个格式化输出函数,它使用类似于C语言样式的编程语言的格式化字符串,传入的参数对应格式化字符串中指定的值,然后输出结果并新起一行。
4. 运行您的代码
12 squared is 144!
>
val square : x:int -> int
>
> square 12;;
val it : int = 144
> square 13;;
val it : int = 169
> let isOdd x = x % 2 <> 0;;
val isOdd : x:int -> bool
> isOdd 12;;
val it : bool = false
> isOdd (square 15);;
val it : bool = true
> 15 |> square |> isOdd;; val it : bool = true
在Visual Studio中入门F#的更多相关文章
- 教程:Visual Studio 中的 Django Web 框架入门
教程:Visual Studio 中的 Django Web 框架入门 Django 是高级 Python 框架,用于快速.安全及可扩展的 Web 开发. 本教程将在 Visual Studio 提供 ...
- 利用Visual GDB在Visual Studio中进行Android开发
转载请注明http://www.cnblogs.com/adong7639/p/4119467.html 无意中发现了Visual GDB这个工具,可以再Visual Studio中进行Android ...
- 在Visual Studio 中开发Office Add-in
作者:陈希章 发表于2017年7月13日 "Talk is cheap, show me the code",我们就用代码来说话吧.这一篇将给大家介绍如何开始Office Add- ...
- 教程:在 Visual Studio 中开始使用 Flask Web 框架
教程:在 Visual Studio 中开始使用 Flask Web 框架 Flask 是一种轻量级 Web 应用程序 Python 框架,为 URL 路由和页面呈现提供基础知识. Flask 被称为 ...
- 在 Visual Studio 中使用 Q# 进行量子编程
1 量子计算机与量子编程 1.1 量子计算机 Quantum computing is computing using quantum-mechanical phenomena, such as su ...
- 在 Visual Studio 中创建一个简单的 C# 控制台应用程序
转载:https://blog.csdn.net/qq_43994242/article/details/87260824 快速入门:使用 Visual Studio 创建第一个 C# 控制台应用 h ...
- 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...
- Visual Studio 中 Build 和 Rebuild 的区别
因为之前写的程序比较小,编译起来比较快,所以一直都没有太在意 Build 和 Rebuild 之间的区别,后来发现两个还是有很大不同. Build 只针对在上次编译之后更改过的文件进行编译,在项目比较 ...
- [No0000AE]在 Visual Studio 中调试 XAML 设计时异常
在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...
随机推荐
- 【转】Objective-C Runtime
之前在找Runtime资料,这篇条理是相对比较清晰,对我最有启发的一篇,转载以作记录. 对于iOS小白,值得多看几遍,会有不少收获. --------------------------------- ...
- Python学习笔记之基本语法学习1
★学习目标: 用Python做HTTP接口测试 ★学习的大纲: ●Python语言基础(安装,第一个案例,基本语法等) ●Request模块使用 ●编写一个简单功能的接口测试案例 ●HTTP协议基础 ...
- Jmeter添加监控指标
需要监控的机器上安装Server-Agency(需要java环境支持)把ServerAgent-2.2.1.zip拷到需要监控的机器上,解压Linux启动如下2. Jmeter上添加监控最终有如下指标 ...
- ES6 学习笔记(一)let,const和解构赋值
let和const let和const是es6新增的两个变量声明关键字,与var的不同点在于: (1)let和const都是块级作用域,在{}内有效,这点在for循环中非常有用,只在循环体内有效.va ...
- 转:java实例化对象的过程
学习JAVA这门面向对象的语言,实质就是不断地创建类,并把类实例化为对象并调用方法.对于初学JAVA的人总搞清楚对象是如何实例化的,假如类之间存在继承关系,那就更糊涂了.下面我们通过两个例题来说明对象 ...
- Android Studio项目构建常见问题解决
1. 创建或导入项目后编译时一直在等待 问题: 原因:AS连网去下载gradle了,但是网络不好或不通 解决:禁用网络,AS就会立即自动终止下载进入到主界面了.此时再去指定离线的gradle版本进行编 ...
- PRINCE2的好处是什么?使用PRINCE2受益非浅
项目管理促进了全球许多公共部门与私营企业的经济活动. 优秀的项目管理意味着使用更少的资源在更短的时间内达到一个成功的结果,经过良好培训的项目经理能够帮助组织更加富有创新力,取得成功. 对那些希望展现自 ...
- Luogu2723丑数Humble Numbers【归并排序】
Luogu2723丑数Humble Numbers 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包 ...
- 使用EPPlus读写xlsx文件
朋友有个需求,想对N张excel表做过滤和合并的处理,拜托我写个小程序.因为用户的背景是非专业用户,因此最好的选择是写个GUI程序,再加上读写excel的需求,所以我的首选就是C#的WinForm了. ...
- 网站建设常用JQuery插件整理
1.jQuery.lazyload 作用:延迟加载网站图片,常用于电商网站.图片展示网站,对于提高网站打开速度比较有效. 2.Owl Carousel 作用:图片滚动特效.响应式传送带插件,特点是支持 ...