MoonBit月兔编程语言 现代编程思想 第八课 队列:可变数据实现
现代编程思想 队列:可变数据结构实现 Hongbo Zhang 1 队列 我们曾经介绍过队列这个数据结构 先进先出 利⽤两个堆栈进⾏实现 我们利⽤可变数据结构进⾏实现 基于数组的循环队列 单向链表 2 队列 我们实现以下函数(以整数队列为例) 1. struct Queue { .. } 2. 3. fn make() -> Queue // 创建空列表 4. fn push(self: Some(node) => aux2(node.next, 1 + cumul) 6. } 7. } 8. aux2(self.head, 0) 9. } 18 总结 本章节我们介绍了使⽤可变数据结构定义队列 循环队列与单向链表的实现 尾调⽤与尾递归 190 码力 | 19 页 | 314.79 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第七课 命令式编程:命令,可变数据结构,循环
7 变量 在⽉兔中,我们可以在代码块中⽤ let mut 定义临时变量 1. let mut x = 1 2. x = 10 // 赋值操作是⼀个命令 在⽉兔中,结构体的字段默认不可变,我们也允许可变的字段,需要⽤ mut 标识 1. struct Ref[T] { mut val : T } 2. 3. fn init { 4. let ref: Ref[Int] = { val: 本身只是⼀个数据绑定 5. ref.val = 10 // 我们可以修改结构体的字段 6. println(ref.val.to_string()) // 输出 10 7. } 8 变量 我们可以将带有可变字段的结构体看作是引⽤ 1 var x = 1 x = 2 x 2 x let ref = { val : 1 } ref.val = 10 ref ref 1 10 val val val mut ref = { val : 1 } ref = { val : 10 } ref ref 1 1 val val 10 val 9 别名 指向相同的可变数据结构的两个标识符可以看作是别名 1. fn alter(a: Ref[Int], b: Ref[Int]) { 2. a.val = 10 3. b.val = 20 4. } 5. 6.0 码力 | 23 页 | 780.46 KB | 1 年前3Rust 程序设计语言简体中文版
...................................................................................... 42 3.1. 变量与可变性 ................................................................................................. .......................................................................... 388 15.5. RefCell与内部可变性模式 ................................................................................... 393 15.6. 引用循环会导致内存泄漏 中,变量默认是不可 变的,这意味着一旦我们给变量赋值,这个值就不再可以修改了。我们将会在第三章的 “变量 与可变性” 部分详细讨论这个概念。下面的例子展示了如何在变量名前使用 mut 来使一个变量 可变: let apples = 5; // 不可变 let mut bananas = 5; // 可变 注意:// 语法开始一个注释,持续到行尾。Rust 忽略注释中的所有内容,第三章将 会详细介绍注释。 0 码力 | 600 页 | 12.99 MB | 1 年前3Rust 程序设计语言 简体中文版 1.85.0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.1. 变量与可变性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 15.5. RefCell与内部可变性模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中,变量默认是不可 变的,这意味着一旦我们给变量赋值,这个值就不可以再修改了。我们将会在第三章的 “变量 与可变性” 部分详细讨论这个概念。下面的例子展示了如何在变量名前使用 mut 来使一个变量 可变: let apples = 5; // 不可变 let mut bananas = 5; // 可变 注意:// 语法开始一个注释,持续到行尾。Rust 忽略注释中的所有内容,第三章将 会详细介绍注释。 0 码力 | 562 页 | 3.23 MB | 8 天前3Rust 语言学习笔记
Rust 类型系统.............................................................................. 21 2.4.1 可变性 .............................................................................. 21 2.4.2 原生类型... 35 3.2.1 借用和引用的规则 ................................................................ 35 3.2.2 引用的可变性...................................................................... 36 3.2.3 总结 ............. ........................................................................ 52 4.3.8 trait 定义中的生命周期和可变性声明 ........................................ 52 第五章 属性与 Cargo 配置 ................................0 码力 | 117 页 | 2.24 MB | 1 年前3ECMAScript规范 第三版 中文版
范围内看上去相似的 Unicode 字符。 非终结符以斜体(italic)显示。非终结符的定义由其被定义的名字后跟一个或更多冒号引入 (冒 号的数量指出产生式所属的文法)。非终结符中一个或多个可变的右式紧跟在下一行。例 如,文法语法的定义: With 语句 : with ( 表达 式 ) 语句 这说明非终结符 With 语句表示 with 托肯,后跟一个左括号托肯,再跟随一个表达式,其 以包含任意数量为正的参数,以逗号隔开,每个参数表达式都是一个赋值表 达式。像这样的非终结符的递归定义很常见。 出现在终结符或非终结符后面的下标后缀"opt",指出这是一个可选符号(optional symbol)。 包含可选符号的可变部分其实可以细分为两个右式,其一忽略可选元素,而另一个包括它。这 意味着: 变量声明 : 标识符 初始化器 opt 是下述产生式的简略形式: 变量声明 : 标识符 标识符 初始化器 for ( 入口表 达式 ; ; 表达式 ) 语句 for ( 入口表 达式 ; 表达式 ; ) 语句 for ( 入口表 达式 ; 表达式 ; 表 达式 ) 语句 所以说,迭代语句其实有八个可变右式。 如果产生式右式出现了短语"[lookahead set] ∉ ",指的是如果紧接着的输入终结符不是所给集合 set 的 成员,则不使用此产生式。 集合 set 可以被写成克里闭包中的非闭合终结符组成的列表。0 码力 | 58 页 | 563.06 KB | 1 年前3Python3 基础教程 - 廖雪峰
十六进制用 0x 前缀和 0-9,a-f 表示,例如:0xff00,0xa5b4c3d2,等等。 浮点数 浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时, 一个浮点数的小数点位置是可变的,比如,1.23x109 和 12.3x108 是完全 相等的。浮点数可以用数学写法,如 1.23,3.14,-9.01,等等。但是对 于很大或很小的浮点数,就必须用科学计数法表示,把 10 用 但是,如果你写的文本基本上全部是英文的话,用 Unicode 编码比 ASCII 编码需要多一倍的存储空间,在存储和传输上就十分不划算。 所以,本着节约的精神,又出现了把 Unicode 编码转化为“可变长编码” 的 UTF-8 编码。UTF-8 编码把一个 Unicode 字符根据不同的数字大小编 码成 1-6 个字节,常用的英文字母被编码成 1 个字节,汉字通常是 3 个 字节,只有很生僻的字符才会被编码成 index out of range 当然,倒数第 4 个就越界了。 Python3 基础教程【完整版】 http://www.yeayee.com/ 55/531 list 是一个可变的有序表,所以,可以往 list 中追加元素到末尾: >>> classmates.append('Adam') >>> classmates ['Michael', 'Bob', 'Tracy'0 码力 | 531 页 | 5.15 MB | 1 年前3Comprehensive Rust(简体中文) 202412
22.2 借用检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 22.3 内部可变性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 22.4 练习:健康统计 . . . 174 30.2 解引用裸指针 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 30.3 可变的静态变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 30.4 联合体 . . . . . . let x: i32 = 10; println!("x: {x}"); // x = 20; // println!("x: {x}"); } • 取消备注 x = 20,以证明变量默认是不可变的。添加 mut 关键字以允许进行更改。 • 这里的 i32 是变量的类型。编译时必须已知类型,但在很多情况下,由于具有类型推理功能(稍后介 绍),程序员可以忽略这一点。 5.3 值 以下是一0 码力 | 359 页 | 1.33 MB | 10 月前3Kotlin 1.9.10 官方文档 中文版
Kotlin/Native 库 平台库 Kotlin/Native 开发动态库——教程 内存管理器 Kotlin/Native 内存管理 iOS 集成 迁移到新版内存管理器 旧版内存管理器 不可变性与并发 并发概述 并发可变性 并发与协程 调试 Kotlin/Native 1.10.2.12 1.10.2.13 1.10.2.13.1 1.10.2.13.2 1.10.2.13.3 1.10 1.13.2 1.13.3 1.13.4 协程指南 协程基础 Kotlin 协程与通道介绍↗ 取消与超时 组合挂起函数 协程上下文与调度器 异步流 通道 协程异常处理 共享的可变状态与并发 select 表达式(实验性的) 使用 IntelliJ IDEA 调试协程——教程 使用 IntelliJ IDEA 调试 Kotlin Flow——教程 序列化(kotlinx removeZeroes(x / 10) else x fun f(x: Int) = removeZeroes(x + 1) 也可以编写函数 f 的命令式实现,使用传统的 while 循环与可变变量(在 Kotlin 中用 var 表示): fun f(x: Int): Int { var cur = x + 1 while (cur % 10 == 0) cur /=0 码力 | 3753 页 | 29.69 MB | 1 年前3Kotlin 官方文档中文版 v1.9
Kotlin/Native 库 平台库 Kotlin/Native 开发动态库——教程 内存管理器 Kotlin/Native 内存管理 iOS 集成 迁移到新版内存管理器 旧版内存管理器 不可变性与并发 并发概述 并发可变性 并发与协程 调试 Kotlin/Native 符号化 iOS 崩溃报告 参考与提示 目标平台支持 改进编译时间 许可证文件 Kotlin/Native FAQ WebAssembly(Wasm) 协程(kotlinx.coroutines) 协程指南 协程基础 Kotlin 协程与通道介绍↗ 取消与超时 组合挂起函数 协程上下文与调度器 异步流 通道 协程异常处理 共享的可变状态与并发 select 表达式(实验性的) 使用 IntelliJ IDEA 调试协程——教程 使用 IntelliJ IDEA 调试 Kotlin Flow——教程 序列化(kotlinx removeZeroes(x / 10) else x fun f(x: Int) = removeZeroes(x + 1) 也可以编写函数 f 的命令式实现,使用传统的 while 循环与可变变量(在 Kotlin 中用 var 表 示): fun f(x: Int): Int { var cur = x + 1 while (cur % 10 == 0) cur0 码力 | 2049 页 | 45.06 MB | 1 年前3
共 336 条
- 1
- 2
- 3
- 4
- 5
- 6
- 34