目录

F# - Basic 语法

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

F#中的标记

F#程序由各种令牌组成。 令牌可以是关键字,标识符,常量,字符串文字或符号。 我们可以将F#标记分为两种类型 -

  • Keywords
  • 符号和运算符

F#关键词

下表显示关键字的关键字和简要说明。 我们将在后续章节中讨论这些关键字的使用。

关键词 描述
abstract 表示一种方法,该方法在声明它的类型中没有实现,或者是虚拟的并且具有默认实现。
and 用于相互递归绑定,属性声明以及对泛型参数的多个约束。
as 用于为当前类对象提供对象名称。 还用于在模式匹配中为整个模式命名。
assert 用于在调试期间验证代码。
base 用作基类对象的名称。
begin 在详细语法中,表示代码块的开始。
class 在详细语法中,表示类定义的开始。
default 表示抽象方法的实现; 与抽象方法声明一起使用以创建虚拟方法。
delegate 用于声明委托。
do 用于循环结构或执行命令式代码。
done 在详细语法中,表示循环表达式中的代码块的结尾。
downcast 用于转换为继承链中较低的类型。
downto for表达式中,在反向计数时使用。
elif 用于条件分支。 如果是其他的简短形式。
else Used in conditional branching.
end

在类型定义和类型扩展中,表示成员定义部分的结尾。

在详细语法中,用于指定以begin关键字开头的代码块的结尾。

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

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

也用于泛型参数约束,以指示类型必须具有某个构造函数。

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

表示没有对象。

也用于通用参数约束。

of 用于区分联合以指示值类别的类型,以及委托和异常声明。
open 用于使命名空间或模块的内容可用而无需限定。
or

与布尔条件一起用作布尔值或运算符。 相当于||。

也用于成员约束。

override 用于实现与基本版本不同的抽象或虚拟方法的版本。
private 限制对成员的访问以在相同类型或模块中进行编码。
public 允许从类型外部访问成员。
rec 用于表示函数是递归的。
return 用于指示作为计算表达式的结果提供的值。
return! 用于指示计算表达式,在计算表达式时,它提供包含计算表达式的结果。
select 在查询表达式中用于指定要提取的字段或列。 请注意,这是一个上下文关键字,这意味着它实际上不是一个保留字,它只在适当的上下文中表现为关键字。
static 用于指示可以在没有类型实例的情况下调用的方法或属性,或者在类型的所有实例之间共享的值成员。
struct

用于声明结构类型。

也用于通用参数约束。

用于模块定义中的OCaml兼容性。

then

用于条件表达式。

也用于在对象构造之后执行副作用。

to 用于for循环以指示范围。
true 用作布尔文字。
try 用于引入可能生成异常的代码块。 with或一起使用。
type 用于声明类,记录,结构,区分联合,枚举类型,度量单位或类型缩写。
upcast 用于转换为继承链中较高的类型。
use 对于需要调用Dispose以释放资源的值,使用而不是let。
use! 用而不是让! 在异步工作流和其他计算表达式中,需要调用Dispose来释放资源。
val 在有限的情况下,在签名中用于指示值,或用于声明成员的类型。
void 表示.NET void类型。 与其他.NET语言互操作时使用。
when 用于模式匹配的布尔条件(when guards) ,并为泛型类型参数引入约束子句。
while Introduces a looping construct.
with 与模式匹配表达式中的match关键字一起使用。 还用于对象表达式,记录复制表达式和类型扩展以引入成员定义,并引入异常处理程序。
yield 用于序列表达式以生成序列的值。
yield! 在计算表达式中使用,以将给定计算表达式的结果附加到包含计算表达式的结果集合。

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

asrlandlorlsllsrlxormodsig

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

atomicbreakcheckedcomponentconstconstraintconstructor
continueeagereventexternalfixedfunctorinclude
methodmixinobjectparallelprocessprotectedpure
sealedtailcalltraitvirtualvolatile

F#中的评论

F#提供两种类型的评论 -

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

F#中的基本程序和应用程序入口点

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

一个编写良好的程序应该有一个顶级语句,可以调用该程序的主循环。

一个极简主义的F#程序,它将在屏幕上显示“Hello World” -

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

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

Hello World!
<上一篇.F# - 程序结构
F# - 数据类型.下一篇>
↑回到顶部↑
WIKI教程 @2018