F#在线运行

版本:
运行结果
教程手册
代码仓库
极速运行
交互输入
极速运行模式,更高效的运行,点击编辑器上方的运行按钮即刻体验吧。
以下是用户最新保存的代码
函数式 赛车模拟 (自由格式) 发布于:2021-02-02 10:52 转换OCaml对象模式 发布于:2021-02-01 00:46 [更多]
显示目录

基本语法



F#基本语法

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

F# tokens

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

  • 关键词
  • 符号和操作符 F# keywords

下表显示了 keywords的简要说明。 我们将在后续章节讨论这些 keywords的使用。

关键词 描述
abstract 表示在声明的类型中没有实现的方法,或者是虚拟的并且具有默认实现的方法。
and 用于相互递归的绑定,在属性声明,并与泛型参数多个约束。
as 用来给当前类对象的对象名。也用于给一个名字模式匹配内的整个模式。
assert 用于在调试过程中验证代码。
base 用作基类对象的名称。
begin 在冗长的语法,表示一个代码块的开始。
class 在冗长的语法,表示一个类定义的开始。
default 表示抽象方法的实现;与抽象方法声明一起使用,以创建一个虚拟的方法。
delegate 用于声明委托。
do 用于循环结构或者执行必要的代码。
done 在详细的语法,指示代码中循环表达块的结束。
downcast 用于转换为继承链中较低的类型。
downto 用于反向计数。
elif 使用条件分支。如果其他的缩写形式。
else 使用条件分支。
end 在类型定义和扩展类型,表示成员定义一节的末尾。
在冗长的语法,用于指定的关键字开头开始一个代码块的结束。
exception 用于声明异常类型。
extern 指示已声明的程序元素在另一个二进制文件或程序集中定义。
false 作为一个布尔值。
finally 与尝试一起使用,以引入执行无论是否发生异常的代码块。
for 用于循环结构。
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 用于引入可能生成异常的代码块。 与finally一起使用。
type 用于声明一个类,记录,结构,识别联合,枚举类型,计量单位或类型的缩写。
upcast 用于转换为一个类型,是在继承链高。
use 用于转换为在继承链中较高的类型。
use! 用来代替let! 在异步工作流和其他计算表达式的值需要Dispose被调用以释放资源。
val 用于在签名,以指示一个值,或在一个类型声明一个部件,在有限的情况下。
void 指示.NET void类型。与其他.NET语言互操作时使用。
when 用于模式匹配的布尔条件(当guards时),并为通用类型参数引入约束子句。
while 引入了一个循环结构。
with 在模式匹配表达式匹配关键字一起使用。对象表达式,
记录复制表达式和类型扩展名也被用来引进的成员定义,并引入异常处理程序。
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!
由JSRUN为你提供的F#在线运行、在线编译工具
        JSRUN提供的F#在线运行,F# 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。

title

使用此草稿 删除草稿

  • 00:23
注册登录后可减少验证码的弹出,点击前往 注册 | 登录

皮肤:

运行模式:

嵌入代码 iframe嵌入:


服务器已安装大部分常用的第依赖库,但仍可能存在一些未被安装的库, 可以通过本窗口立即安装所需依赖库。


请输入依赖库的名称:

请选择语言: