在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#。

安装 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 了。

创建一个控制台程序

控制台应用程序是 Visual Studio 中最基本的项目之一。这里介绍怎样创建它。 打开 Visual Studio :

  1. 在“文件”菜单下,选择“新建”,然后选择“项目”。
  2. 在新建项目对话框中,我们应该能在“模板”区域内看到 Visual F#。选择该项以显示F#的模板。
  3. 选择“确定”按钮创建 F# 项目!你现在应该能在“解决方案资源管理器”中看到一个F#项目。

编写您的代码

让我们立即开始写一些代码吧。请确保该程序. fs 文件已打开, 然后用以下内容替换它:

1 module HelloSquare
2
3 let square x = x * x
4
5 [<EntryPoint>]
6 let main argv =
7   printfn "%d squared is: %d!" 12 (square 12)
8   0 // Return an integer exit code

在前面的代码示例中,定义了一个函数square,它需要一个输入 x,然后将它与自身相乘。因为 F# 使用类型推理,因此不需要指定 x 的类型。F# 编译器了解可使乘法有效的类型,并根据 square 被调用的情况来为 x 赋予合适的类型。如果你将鼠标悬停在 square,你应该能看到如下内容:

1 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语言样式的编程语言的格式化字符串,传入的参数对应格式化字符串中指定的值,然后输出结果并新起一行。

运行您的代码

您可以通过按 ctrl-f5 来运行代码并查看结。这将运行程序而不进行调试,允许您查看结果。或者, 您可以选择 Visual Studio 中的 "调试" 菜单项, 然后选择 "开始而不进行调试"。

现在, 您应该看到 Visual Studio 弹出的控制台窗口输出一下内容:

12 squared is 144!

恭喜您!您已经在 Visual Studio 中创建了您的第一个 F# 项目,该项目编写了一个 F# 函数,您调用了该函数,并输出了该函数产生的结果,最后运行了该项目并查看该结果。

使用 F# 交互式编程

在 Visual Sutdio 中,Visual F# 工具最好的一个功能就是 F# Interactive 窗口。它允许您将代码发送到一个进程,您可以调用其中的代码并交互式的查看结果。

要开始使用它,请选中定义平方函数的代码。接着,按住 Alt 键并按下 Enter。这将在  F# Interactive 窗口中执行执行代码。您应该能看到 F# Interactive 窗口中输出一下内容:

>

val square : x:int -> int

>

这与您将鼠标悬停到 square 上时显示出的函数签名相同。因为现在 square 已经在 F# Interactive 窗口中被定义,你可以传入不同的值来调用它:

> square 12;;

val it : int = 144

> square 13;;

val it : int = 169

这将执行函数,并将结果绑定到 it 上,并显示 it 的类型和值。注意,每行必需用 ;; 结束。这让 F# Interactive 知道何时完成函数调用。您还可以在 F# Interactive 中定义新的函数:

> let isOdd x = x % 2 <> 0;;

val isOdd : x:int -> bool

> isOdd 12;;

val it : bool = false

上面定义了一个新的函数 isOdd,它接受一个 int 参数并检查它是否为奇数!您可以调用此函数以查看它在不同的输入下返回的内容。可以如下调用函数:

> isOdd (square 15);;

val it : bool = true

您也可以使用“管道转发”运算符将该值传入两个函数中:

> 15 |> square |> isOdd;; val it : bool = true

时间: 2024-10-26 18:59:31

在Visual Studio中入门F#的相关文章

VS2015--在 Visual Studio 中调试时映射调用堆栈上的方法

https://msdn.microsoft.com/zh-cn/library/dn194476.aspx 在 Visual Studio 中调试时映射调用堆栈上的方法 创建代码图,以便在调试时对调用堆栈进行可视化跟踪.你可以在图中进行标注以跟踪代码执行的操作,以便专注于查找 Bug. 生成调用堆栈图 1 开始调试.(键盘:"F5") 2 在你的应用进入中断模式或你单步执行某一函数之后,请选择"代码图".(键盘:Ctrl + Shift + `) 当前的调用堆栈在

在Visual Studio中使用GitHub(使用篇)

一.准备工具 上一篇中我们已经安装了Git Extensions和Tortoisegit.在这里我们要为Visual Studio安装一个插件,专门用于Git. Git Source Control Provider,打开http://visualstudiogallery.msdn.microsoft.com/ 搜索"Git"关键字,即可搜索到该插件. 二.配置源码管理工具 三.配置帐户关联 四.使用 后面的事情就很简单了,创建文件夹 pull 一个副本,修改文件,commit文件,

Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor

在Visual Studio中创建混合移动应用程序的一个解决方案是使用Xamarin Portable Razor工具,这是ASP.NET MVC API针对移动设备的一个轻量级实现.Xamarin编写了一个示例应用程序,演示了如何使用C#.本地API和Web技术编写iOS及Android应用. Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor,布布扣,bubuko.com

去除 Visual Studio 中臃肿的 ipch 和 sdf 文件

使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量,可惜毕竟硬盘还没有廉价到免费的地步. 那么,该怎么解决呢?其实可以关闭它.方法: Tools->Options->Text Editor->C/C++->Advanced->Disable Database,设置为True 但是这样的办法会产生另外的一些问题,可能会导致其他的一些

如何在Visual Studio中选择C++和C#的编译器版本

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何在Visual Studio中选择C++和C#的编译器版本.

Visual Studio中的环境变量(以Visual Studio 2013为例)

前言 本文总结了Visual Studio中常见的环境变量及其在组织解决方案.工程中的作用. 注:本文使用的是Visual Studio 2013,由于作者主要从事C/C++开发,所以是以Visual C++的工作环境配置来描述. 什么是vs的环境变量? 先看图吧,图中以美元符号$开头 + 一对括号,这样进行引用的就是我所谓的环境变量, 图中出现的几个环境变量含义如下: 环境变量名 含义 $(SolutionDir) 解决方案目录:即.sln文件所在路径 $(Configuration) 当前的

visual studio C/C++ 编程学习 visual studio 中的生成事件

也许是太方便了,大家在visualstudio中调试代码时,大多习惯了直接点这个小绿箭头,但其实从点这个小绿箭头直到程序开始运行中间经历了多个步骤. 下面我就这段事件在编译过程中遇到的问题,讲一些我的经验. 今天先来说一说 visual studio 中的生成事件 一个事例:有几幅bmp图像数据文件放在 test .vcproj工程文件所在文件夹下面的Data文件夹中.此时,外界调用该工程所生成的DLL文件,且需要取Data文件夹中bmp图像数据文件. 如下图所示: 作为首启动项的CallTes

Visual Studio中的/MD, /MT, /MDd, /MTd 选项

Visual Studio中/MD, /MT, /MDd, /MTd表示多线程模块是否为dll.对于这几个选项我的理解如下: /MD: 定义了_MT和_DLL,让程序用多线程和dll版本的运行库. /MT: 让程序用多线程和静态版本的运行库. /MDd: 定义了_MT._DLL._DEBUG,让程序用debug模式下多线程和dll版本的运行库. /MTd: 定义了_MT和_DEBUG,让程序用debug模式下的多线程和静态版本的运行库. 参考资料:https://msdn.microsoft.c

Visual Studio 中的单元测试 UNIT TEST

原文:Visual Studio 中的单元测试 UNIT TEST 注:本文系作者原创,可随意转载,但请注明出处.如实在不愿注明可留空,强烈反对更改原创出处. TDD(Test-Driven Development) 测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码.单元测试是最基本的测试步骤.位于整个产品开发流程V模型的最底部.大致如图,在各种开发流程中RA&PSD完成后,无需底层基础,