【F#学习】“变量”?绑定!

绑定

在F#中,给一个值标记上名字的过程叫作绑定binding)。绑定是不可更改的,就像C#语言中的readonly或者const一样。因此,我们称这样的东西为绑定而非变量。由于F#是静态类型语言,所有的绑定必须在编译期就明确类型。

通过关键字let来创建绑定。在大多数情况下,编译器足够聪明,能够推断出绑定的类型。(学习了type关键字之后,你就会惊叹编译器已经聪明到难以想象的程度了!)

// 自动类型推断
let fingers = 10

函数其实也是普普通通的绑定,只不过带有参数而已。函数的最后一行会作为他的返回值。无论是函数参数,还是函数的返回值,编译器都会尽量地去自动推断。

// 如下的两个函数完全相同
let add x y = x + y
let add (x: int) (y: int) :int = x + y

类似于Haskell,调用函数的时候不需要括号和逗号。这点和C#有很大的不同,但你很快就会接受的。

let five = add 2 3

当编译器无法推断类型的时候,必须使用冒号:来明确标注类型。(这种情况非常之罕见!当然,在任何情况下,你都可以明确标注类型。)

let fingers: int = 10
let add (x: int) (y: int): int = x + y

必须先定义绑定才能使用。这似乎类似于C++,毕竟在C++里,函数也必须先声明再使用。

// 这么做会无法通过编译。报错。
let seven = add 3 4
let add x y = x + y

在F#中,缩进是重要的,就像Python一样。

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

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

F#的绑定一般在module(类似于C#的static class)下进行。

module Calculator

let pi = 3.14
let add x y = x + y

可变绑定(let mutable variable = ...)暂不介绍。

posted @ 2025-09-19 22:37  QMazon  阅读(7)  评论(0)    收藏  举报