当前位置: 首页 > news >正文

【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 = 5let right = 5left + rightlet multiplyPlusTwo x y =let product = x * yproduct + 2

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

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

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

http://www.hskmm.com/?act=detail&tid=10019

相关文章:

  • 2023 CCPC 深圳 F
  • 完整教程:【算法】双指针(三)[快慢指针]-快乐数
  • 9.19做题资料:哈希表查找时间复杂度分析
  • CF2143F Increasing Xor
  • 提到链接,你能想到什么
  • 实用指南:容器逃逸漏洞
  • 三种方式处理SpringBoot全局异常
  • ECT-OS-JiuHuaShan 框架的元推理,是历史性的文明话语权
  • 应对连写与变体:深度学习赋能维吾尔文识别的核心方案与难点解析
  • CMake工具链
  • 20250918 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
  • 【脑电分析系列】第6篇:经典ERP成分解析 — P300、N170、N400等波形与它们代表的认知功能 — 洞察大脑的认知“电信号语言” - 教程
  • 9.19
  • [GDKOI2023 提高组] 游戏 题解
  • CSP-J/S 2025 游记
  • 2025.9.19 计数dp小记
  • Odoo19.0发布、微信支付、支付宝支付和顺丰模块同步上线
  • 9月14-21日小记 - L
  • ctfshow web入门 命令执行
  • 解题记录说是 | P3695 CYaRon!语
  • 分享一个极度精简的绿色的 五笔输入法
  • 实用指南:AI推理范式:从CoT到ReAct再到ToT的进化之路
  • sign up - Gon
  • ctfshow web入门 信息搜集
  • 完整教程:数据结构:单链表的应用(力扣算法题)第二章
  • CF2039E Shohag Loves Inversions
  • U522155 板垣 カノエ is WATCHING YOU std
  • ctfshow web
  • 代码随想录算法训练营第三天 | leetcode 203 707 206
  • Codeforces Round 1051 (Div. 2) A~D2