Basic 语法
优质
小牛编辑
126浏览
2023-12-01
您已经了解了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语言 -
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 World” -
(* This is a comment *)
(* Sample Hello World program using F# *)
printfn "Hello World!"
编译并执行程序时,它会产生以下输出 -
Hello World!