基础

基础 属于 F#

1 个练习

关于 基础

在 F# 中,凡是具有类型、并且可以定义的东西,都称为_值_。这包括布尔值、整数和数组,也包括函数。整数值由 1 个或多个(连续的)数字定义,并支持默认的数学运算符。

把值赋给一个名称称为_绑定_。绑定是不可变的,因此它们类似于其他语言中的常量。绑定使用let关键字定义。

F# 是一门静态类型语言,所以每个绑定都有类型。对大多数绑定来说,类型是可写可不写的,因为 F# 的_类型推断_通常能根据绑定的值推断出类型。

// Automatically inferred type
let fingers = 10

函数也是普通的绑定,只是带有 1 个或多个形参。函数会自动返回它的最后一个表达式。对大多数函数来说,类型推断同样适用,它会分析调用函数时传入了哪些值,以及函数返回了什么值。

// Automatically inferred types for parameters and return type
let add x y = x + y

调用函数时,写下函数名,并为函数的每个形参传入实参。

let five = add 2 3

如果无法推断出某个绑定的类型,编译器会报错。要解决这个问题,请显式指定该绑定的类型。

// Explicit type annotation
let fingers: int = 10

// Explicit type annotation (also for parameters)
let add (x: int) (y: int): int = x + y

F# 中的绑定只能在其定义_之后_使用。在定义之前使用绑定会导致编译错误。

// Compile error as the add binding has not yet been defined
// let seven = add 3 + 4

let add x y = x + y

F# 用有效空白来定义作用域:相对声明绑定的那一行,用空格对代码进行缩进。默认约定是用 4 个空格缩进。

let toes =
    let left = 5
    let right = 5
    left + right

let multiplyPlusTwo x y =
    let product = x * y
    product + 2

// Trying to access the left, right or product bindings
// here would result in a compile error

F# 的绑定(包括函数)通常组织在模块中。模块把相关的功能归在一起,使用module关键字定义。模块定义必须写在它的绑定之前:

module Calculator

let pi = 3.14

let add x y = x + y

F# 支持 2 种注释。单行注释以//开头,多行注释则放在(*和*)之间。

通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 基础