无涯教程-F# - 基础语法

91 阅读5分钟

您已经了解了F#程序的基本结构,因此很容易理解F#编程语言的其他基本构造块。

F#关键字

下表显示了关键字和关键字的简要说明,无涯教程将在后续章节中讨论这些关键字的用法。

关键字 说明
abstract 表示一个方法,该方法在声明的类型中没有实现。
and 用于相互递归绑定,属性声明中,并且对通用参数具有多个约束。
as 用于给当前类对象一个对象名。
asset 用于在调试过程中验证代码。
base 用作基类对象的名称。
begin 表示代码块的开始。
class 表示类定义的开始。
default 表示抽象方法的实现。
delegate 用于声明委托。
do 用于循环构造或执行命令性代码。
done 表示循环表达式中代码块的结尾。
downcast 用于转换为继承链中较低的类型。
downto 在 for 表达式中,当反向计数时使用。
elif 用于条件分支, if的简短形式。
else 用于条件分支。
end

在类型定义和类型扩展中,指示成员定义部分的结尾。用于指定以begin关键字开头的代码块的结尾。

Exception 用于声明异常类型。
extern 表示在另一个二进制文件或程序集中定义了声明的程序元素。
false 用作布尔类型。
finally 与try引入代码块一起使用,无论是否发生异常,该代码块都会执行。
for 用于循环构造。
fun 用于lambda表达式,也称为匿名函数。
function 用作fun关键字和在单个参数上具有模式匹配的lambda表达式中的match表达式替代。
global 用于引用顶级.NET命名空间。
if 用于条件分支构造中。
in 用于序列表达式,并以冗长的语法将表达式与绑定分开。
inherit 用于指定基类或基接口。
inline 用于指示应直接集成到调用者代码中的功能。
interface 用于声明和实现接口。
internal 用于指定成员在部件内部可见,而在部件外部不可见。
lazy 用于指定仅在需要输出时才执行的计算。
let 用于将名称关联值的函数。
let! 在异步工作流中用于将名称绑定到异步计算的输出,用于将名称绑定到输出的计算类型。
match 用于通过将值与模式进行比较来进行匹配。
member 用于声明对象类型的属性或方法。
module 用于将名称与一组相关的类型,值和函数相关联,以将其与其他代码逻辑上分开。
mutable 用于声明变量,即可以更改的值。
namespace 用于将名称与一组相关的类型和模块相关联,以使其在逻辑上与其他代码分开。
new

用于声明,定义或调用可创建或可以创建对象的构造函数。

还用于通用参数约束,以指示类型必须具有特定的构造函数。

not 实际上不是关键字,但是,不能将struct组合用作通用参数约束。
null

表示没有对象。

也用于通用参数约束。

of 用于有区别的联合以指示值类别的类型,并用于委托和异常声明。
open 用于使命名空间或模块的内容不加限制地可用。
or

与布尔条件一起用作布尔或运算符,等同于||。

override 用于实现与基本版本不同的抽象或虚拟方法。
private 限制只能通过当前对象才能访问。
public 允许从类型外部访问成员。
rec 用于表示函数是递归的。
return 用于表示要提供作为计算表达式输出的值。
return! 用于表示计算表达式,该计算表达式在被判断时提供包含的计算表达式的输出。
select 在查询表达式中用于指定要提取的字段或列。
static 用于表示可以在没有类型的情况下调用的方法或属性共享值。
struct

用于声明结构类型,也用于通用参数约束,用于模块定义中的OCaml兼容性。

then

用于条件表达式。

还用于在对象构建后产生副作用。

to 在for循环中用于指示范围。
true 用作布尔类型。
try 用于引入可能会生成异常的代码块,与 with 一起使用,或者最终与一起使用。
type 用于声明类,记录,结构,已区分的并集,枚举类型,度量单位或类型缩写。
upcast 用于转换为继承链中更高的类型。
use 用于代替需要调用Dispose释放资源的值。
use! 用于代替let!异步工作流和其他计算表达式中需要需要调用Dispose以释放资源的值。
val 用于声明成员的类型。
void 指示.NET无效类型,与其他.NET语言进行互操作时使用。
when 用于模式匹配时的布尔条件,并为通用类型参数引入约束子句。
while 介绍了一个循环结构。
with 与模式匹配表达式中的match关键字一起使用。
yield 用于序列表达式以产生序列值。
yield! 用于计算表达式中,将给定计算表达式的输出附加到包含该计算表达式的输出集合中。

一些保留的关键字来自OCaml语言-

asr land lor lsl lsr lxor mod sig

保留其他一些保留关键字,以供将来F#扩展之用。

atomic break checked component const constraint constructor
continue eager event external fixed functor include
method mixin object parallel process protected pure
sealed tailcall trait virtual volatile

F#注释

F#提供两种类型的注释-

  • 单行注释以//符号开头。
  • 多行注释以(*开头,以*)结尾。

F#入口点

通常,对于F#程序,您没有任何明确的入口点,编译F#应用程序时,提供给编译器的最后一个文件将成为入口点,并且该文件中所有语句都将自上而下执行。

编写良好的程序应具有单个顶级语句,该语句将调用程序的主循环。

一个非常简约的F#程序,它将在屏幕上显示" Hello Learnfk"-

(* This is a comment *)
(* Sample Hello Learnfk program using F# *)
printfn "Hello Learnfk!"

编译并执行程序时,将产生以下输出-

Hello Learnfk!

参考链接

www.learnfk.com/fsharp/fsha…