首页 > 代码库 > 1.5.1 用 F# 写 Hello world

1.5.1 用 F# 写 Hello world

1.5.1 用 F# 写 Hello world

 

开始使用 F# 最简单的方法是创建一个新的脚本文件。脚本是轻量级 F# 源文件,它一定属于项目,扩展名通常是 .fsx。在 Visual Studio 中,可以选择 File > New > File (或按 Ctrl + N),从脚本类别中选择 F#脚本文件。有了这个文件之后,我们就可以直接写“Hello world”代码了。

 

Listing 1.10 Printing hello world (F#)

 

let message = "Hello world!"  [1]

printfn "%s" message        [2]

 

虽然,这可能不是 F# 中最简单的“Hello world”,但是,只用一行代码写出什么有意义的东西还是相当困难的。清单 1.10 开头是一个值绑定[1],这类似于变量声明,但有一个重要的区别:值是不可变的,不能在以后改变其值。这完全符合函数式风格,使一切都不可变(接下来两章将会学习有关内容)。

把值 Hello world 分配给符号 message后,程序接着调用 printfn 函数[2]。值得注意的是,F# 函数的参数通常只用空格分隔,不用括号、逗号。偶尔使用括号,也只是为了让代码更具可读性,例如,cos(1.57),即使在这种情况下,括号也是可选的。在接下来的几章中,随着学习 F# 的核心概念,我们将解释用到的约定。

printfn 函数的第一个参数是格式字符串。在这个示例中,它指定函数应该只有一个额外的参数,且是字符串。类型由格式字符串中的 %S (字母 s 表示 string)指定,参数的类型由编译器检查。现在我们将解释代码是如何运行的(清单 1.11)。

 

提示

 

运行代码最简单的方法,是使用 F# 工具集中的交互式工具。使用这些工具集,能够进行交互风格的开发,这样,可以很容易看到代码在做什么,验证输入样本运行后的行为是否正确。某些语言有交互控制台,可以粘贴代码,并执行,这称为读取-求值-输出循环(read-eval-print,REPL), 因为代码是立即计算的。

在 F# 中,F# Interactive 既可以在命令提示符下使用,也集成到了 Visual Studio 环境中。这样,写代码不仅有完整的 IDE 和智能感知支持,还可以选中一段代码,立即执行,进行测试。

 

如果是在命令行中使用 F# Interactive,粘贴在前面的代码,并键入两个分号(;;),并按回车键就可以执行了。

如果是使用 Visual Studio,选中代码,然后按 Alt + 回车键,代码就会发送到交互式窗口,[并运行。]让我们来看看运行这段代码得到的结果。

 

Listing 1.11 Running the Hello worldprogram (F# Interactive)

 

Microsoft F# Interactive, (c) MicrosoftCorporation, All Rights Reserved

F# Version 1.9.7.4, compiling for .NETFramework Version v2.0.50727

> (...);;

Hello world!                     [1]

val message : string = "Helloworld!"  [2]

 

第一行[1]是 printfn 函数的输出,打印字符串,不返回任何值;第二行[2],由值绑定生成,报告声明了值 message,类型为字符串。我们并没有指定类型,但 F# 使用一种称为类型推断(type inference)的技术,推导出值的类型,所以程序是静态类型,就像在 C# 的程序一样。

写类似于“Hello world”的示例并不能说明 F# 在更大规模使用时的表现。通常的 F# 开发过程是值得一看的,因为这才更有意义。