MoonBit月兔编程语言 现代编程思想 第十课 哈希表与闭包现代编程思想 哈希表与闭包 Hongbo Zhang 1 回顾 表 键值对的集合,其中键不重复 简单实现:⼆元组列表 添加时向队⾸添加 查询时从队⾸遍历 树实现:⼆叉平衡树 基于第五节课介绍的⼆叉平衡树,每个节点的数据为键值对 对树操作时⽐较第⼀个参数 2 哈希表 哈希函数/散列函数 Hash function 将任意⻓度的数据映射到某⼀固定⻓度的数据 在⽉兔的 Hash 11 3 21 13 27 检查3 0 11 3 21 13 27 检查21 0 11 21 3 13 27 检查13 0 11 21 3 13 27 21 闭包 闭包:⼀个函数及其捆绑的周边环境状态的引⽤的组合 闭包的环境状态 词法环境:与程序的结构对应,在代码定义时决定 1. fn init { 2. let mut i = 2 3. fn debug_i() { debug(i) debug_i() // 输出3 6. { 7. let i = 4 // 此i⾮彼i 8. debug_i() // 输出3 9. } 10. } 22 闭包:封装数据 我们可以利⽤闭包封装数据和⾏为 使⽤者⽆法直接获得数据,必须通过提供的函数进⾏间接操作 可以限制使⽤者的操作,对参数进⾏检验等,保证数据合法 1. fn natural_number_get_and_set()0 码力 | 27 页 | 448.83 KB | 1 年前3
Rust 程序设计语言简体中文版..................................... 138 7. 使用包、Crate 和模块管理不断增长的项目 ....................................................................... 141 7.1. 包和 Crate ........................................ ........................... 316 13. Rust 中的函数式语言功能:迭代器与闭包 ...................................................................... 318 13.1. 闭包:可以捕获其环境的匿名函数 ........................................... ................................................................................... 507 19.4. 高级函数与闭包 ..................................................................................................0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . 128 7. 使用包、Crate 和模块管理不断增长的项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.1. 包和 Crate . . . . . . . . . . . . . . . . . . . . . . 276 13. 函数式语言特性:迭代器与闭包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 13.1. 闭包:可以捕获其环境的匿名函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 20.4. 高级函数与闭包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 562 页 | 3.23 MB | 24 天前3
Rust 语言学习笔记....................................... 61 6.1.1 闭包 ................................................................................. 61 6.1.2 闭包捕获周围环境的方式 ......................................... 92 7.1.3 使用 join 等待所有线程结束 .................................................... 92 7.1.4 线程与 move闭包 ................................................................ 93 7.2 消息传递 ................... Crate 1.crate 编译后会形成一个库(例如.so)或二进制可执行文件。crate 分为两种: lib crate 和 bin crate。 2. 一个包可以带有零个或一个 lib crate 和任意多个 bin crate。一个包中必 须有 crate,至少一个,(lib crate 或 bin crate 都可以) 3.通常写 rust 项目时非常依赖 crate,很多重要的信息都是配置在0 码力 | 117 页 | 2.24 MB | 1 年前3
Laravel 5.6 中文文档的基础上继续进行优化,包括日志系统、单机任务调度、模型序列化优化、动态频率限制、广播频道类、API 资源控制器 生成、Eloquent 日期格式化优化、Blade 组件别名、Argon2 密码哈希支持、引入 Collision 扩展包等等等等。此外,所有的前端脚手架代码都已升 级到 Bootstrap 4,Laravel 底层使用的 Symfony 组件都已升级到 Symfony ~4.0 版本。 Laravel 5.6 版本的发布恰逢 function () { // }); }); 广播频道类 如果你的应用消费多个不同的频道,routes/channels.php 文件可能会变得很臃肿,所以,作为使用闭包来授权频道的替代方案,你现在可以使用 频道类。要生成一个频道类,可以使用 Artisan 命令 make:channel。该命令会将新生成的频道类存放到 app/Broadcasting 目录下: Broadcast::channel('order.{order}', OrderChannel::class); 最后,可以将频道的授权逻辑放到频道类的 join 方法。join 方法中的代码等同于之前位于频道授权闭包中的处理逻辑。当然,你还可以使用频道模 型绑定:0 码力 | 377 页 | 14.56 MB | 1 年前3
Laravel 6.0 中文文档务中间件、新增懒集合、优化数据库子查询、将前端脚手架提取到独 立的 Composer 包 laravel/ui、以及多个 bug 修复和可用性的提 升。 语义化版本 Laravel 框架包 laravel/framework 现在遵循语义化版本标准。这使 得框架得以和其他已经遵循该版本标准的 Laravel 扩展包保持一 致,不过 Laravel 的发布周期将保持不变。 兼容 Laravel ->orderBy('arrived_at', 'desc') ->limit(1) )->get(); Laravel UI 之前版本 Laravel 提供的典型的前端脚手架代码现在被提取到独立 的 Composer 扩展包 laravel/ui 中,这样一来可以让 UI 脚手架代 码的开发和维护与主框架分离。所以,在默认框架脚手架代码中,现 在已经剔除了 Bootstrap 和 Vue 相关代码,make:auth 学院君致力于提供优质 Laravel 中文学习资源:https://xueyuanjun.com 11 如果想要恢复之前版本的 Vue/Bootstrap 脚手架代码,可以安 装 laravel/ui 扩展包,并使用 Artisan 命令 ui 来安装前端脚手架 代码: composer require laravel/ui php artisan ui vue --auth 升级指南 重要更新概览0 码力 | 1442 页 | 14.66 MB | 1 年前3
Laravel 5.3 中文文档...................................................................................... 570 14. 官方包 ................................................................................................... ........................................................................................ 659 15.3 包开发 ................................................................................................. 实现无痛的 OAuth2 服务器;通过 Laravel Scout 实现全文模型搜索;在 Laravel Elixir 中支持 Webpack;“可邮寄”的对象;明确分离 web 和 api 路由;基于闭包的控制台命令;存储上传文件的辅助函数;支持 POPO 和单动作控制 器;以及优化前端脚手架;等等等等。 通知(Notifications) 注:Laracasts 上有关于此特性的免费视频教程。0 码力 | 691 页 | 9.37 MB | 1 年前3
Laravel 5.1 中文文档'http://localhost'; 翻译文件 用于为 vendor 包发布语言文件的默认目录做了移动,所有 vendor 包语言文件从 resources/lang/packages/{locale}/{namespace}移动到了 resources/lang/vendor/{namespace}/{locale}目录。例如,Acme/Anvil 包的 acme/anvil::foo 英语语言文件将会从 队列驱动或者 AWS SES 电子邮件驱动,需要升级 AWS PHP SDK 到 3.0 版本。 如果你正在使用 Amazon S3 文件系统驱动,需要通过 Composer 升级相应的文件系统包: Amazon S3: league/flysystem-aws-s3-v3 ~1.0 废弃 以下 Laravel 特性已经被废弃并且会在 2015 年 12 月份的 Laravel Blackfire Profiler 2、安装 & 设置 2.1 首次安装 在启用 Homestead 环境之前,需要先安装 Virtual Box 或者 VMWare 和 Vagrant,所有这些 软件包都会常用操作系统提供了一个便于使用的可视化安装器。 2.1.1 安装 Homestead Vagrant 盒子 VirtualBox/VMWare 和 Vagrant 安装好了之后,在终端中使用能如下命令将0 码力 | 307 页 | 3.46 MB | 1 年前3
Laravel 5.2 中文文档配路由定义中的 {user} 参数。 现在,在 Laravel 5.2 中,框架将会基于相应 URI 片段自动注入模型,从而允许你快速 访问需要的模型实例。 如果路由参数片段 {user} 匹配路由闭包或控制器方法中相应变量 $user,并且被类型声明 为一个 Eloquent 模型类的话,Laravel 将会自动注入该模型。 更多隐式模型绑定详情请查看 Laravel 5.2 文档 HTTP 路由模型绑定部分。 独立的命令&处理器 Laravel 5.2 命令现在只支持自处理命令,不再支持独立的命令和处理器。 如果你想要继续使用独立的命令和处理器,可以安装提供向后兼容支持的 Laravel Collective 包:https://github.com/LaravelCollective/bus 配置 开发环境 添加一个 env 配置项到配置文件 app.php 中: 'env' => env('APP_ENV' 么现在应该移除这个类型提示然后在路由或控制器中直接创建一个新的模型实例;否则, Laravel 将会基于路由 URI 的标识符试图从数据库获取一个已存在的模型实例。 IronMQ IronMQ 队列驱动被移动到自己的扩展包中,不再被框架核心支持: http://github.com/LaravelCollective/iron-queue 任务/队列 php artisan make:job 命令现在默认会创建0 码力 | 377 页 | 4.56 MB | 1 年前3
Go 入门指南(The way to Go)第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 常量 4.4 变量 4.5 基本类型和运算符 4.6 字符串 4.7 strings 和 strconv 包 4.8 时间和日期 4.9 指针 - 2 - 本文档使用 书栈(BookStack.CN) 构建 第5章:控制结构 5.1 if-else 结构 5.2 测试多返回值函数的错误 5.3 1 介绍 6.2 函数参数与返回值 6.3 传递变长参数 6.4 defer 和追踪 6.5 内置函数 6.6 递归函数 6.7 将函数作为参数 6.8 闭包 6.9 应用闭包:将函数作为返回值 6.10 使用闭包调试 6.11 计算函数执行时间 6.12 通过内存缓存来提升性能 第7章:数组与切片 7.1 声明和初始化 7.2 切片 7.3 For-range 结构 map 的键值对调 第9章:包(package) 9.1 标准库概述 9.2 regexp 包 9.3 锁和 sync 包 - 3 - 本文档使用 书栈(BookStack.CN) 构建 9.4 精密计算和 big 包 9.5 自定义包和可见性 9.6 为自定义包使用 godoc 9.7 使用 go install 安装自定义包 9.8 自定义包的目录结构、go install0 码力 | 466 页 | 4.44 MB | 1 年前3
共 386 条
- 1
- 2
- 3
- 4
- 5
- 6
- 39













