首页 > 代码库 > 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# 开发过程是值得一看的,因为这才更有意义。