Ruby 2.7.0 preview 2 发布
Ruby 2.7.0 preview 2 已经发布了,最终版本计划在 12 月发布。该版本引入了一些新特性和性能改进,主要是:
- Compaction GC
- Pattern Matching
- REPL improvement
- Separation of positional and keyword arguments
Compaction GC
这个版本引入了 Compaction GC,以碎片化内存空间。GC.Compact 方法对堆进行压缩,这个函数压缩堆中的活动对象,以使用更少的页,并且堆会更友好。
Pattern Matching(实验性)
模式匹配是函数式程序设计语言中广泛使用的一种特性。通过模式匹配,可以遍历给定的对象并分配其值。
case JSON.parse('{...}', symbolize_names: true) in {name: "Alice", children: [{name: "Bob", age: age}]} p age ... end
REPL improvement
irb 现在支持多行编辑,它由 reline,readline 兼容的纯 Ruby 实现驱动。它还提供 rdoc 集成。在 irb 中,可以显示给定类、模块或方法的引用。
Separation of positional and keyword arguments
关键字参数和位置参数的自动转换,将在 Ruby 3 中将删除。
其他显著新特点:
- 引入编号参数作为默认块参数
- 添加 Enumerable#tally
["a", "b", "c", "b"].tally #=> {"a"=>1, "b"=>2, "c"=>1}
- 现在允许在 Self 上调用私有方法
def foo end private :foo self.foo
- 添加 Enumerator::Lazy#eager
a = %w(foo bar baz) e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.eager p e.class #=> Enumerator p e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"]
另外,还有更新部分标准库:
- Bundler 2.1.0.pre.1
- RubyGems 3.1.0.pre.1
- CSV 3.1.2 (NEWS)
- Racc 1.4.15
- REXML 3.2.3 (NEWS)
- RSS 0.2.8 (NEWS)
- StringScanner 1.0.3
更多详情见发布说明。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 从 WeRequest 登陆态管理来聊聊业务代码
在开发微信小程序之前,个人从来没有接触过开发中涉及到第三方服务器交互的流程。在开发的过程本身倒是没有什么太大的意外,只是在维护服务器登陆状态这一点很讨厌。因为涉及到自身服务器的登录状态以及微信官方服务器登陆状态三方的关系。 下图是微信登陆机制: 在这种场景下,个人非常关注的点在于: 如何能够无感知的进行登陆(并且无多余请求)。微信的登陆状态倒是还好解决,可以利用 wx.checkSession 来进行判定,但是在与后台服务器交互时候,如果后台交互中返回 HTTP 状态码 401 (未授权)或者其他未登陆指示时候。则需要对其进行额外处理。 当时记得为了优雅的解决这个问题,想了很多方案,也与一些伙伴讨论过这个问题。虽然当时的确实现了无感知的登陆,但是要么需要多请求服务器,要么就是代码上实现逻辑过于复杂,代码维护。虽然不满意,但是在当时也没想到什么非常好的解决方法。 weRequest 自带状态管理的请求组件 后面经过老大的介绍,看到这个组件时,我顿时眼前一亮,这正是我所需要的解决方案,该方案的图示如下: 只需要配置一些初始化项目,便可以直接拿去使用了。 // 导入 import weReq...
- 下一篇
kiftd 1.0.26 发布,青阳网络文件传输系统
kiftd简介: kiftd是一款专门面向个人、团队和小型组织的私有网盘系统。开源、便捷、小巧。无论是在笔记本上、家庭、学校还是办公室,均可以随时随地使用它。它不但是替代U盘进行文件传输的不二之选,同时也是一款具备视频/音乐在线播放、文档预览、图片查看、文件夹访问控制、拖拽上传、移动端访问等多种功能的个人云存储应用。它无任何的使用限制(无论是非商业的还是商业的),即开即用,即使是刚刚学会点击鼠标的小白也能够在3分钟内快速开始。 想要了解更多内容?欢迎访问项目官网:https://kohgylw.gitee.io/index.html 常规更新v1.0.25 *本次更新为维护性的更新,修复一些已经发现的问题并优化使用体验,推荐所有用户升级。 优化了账户配置文件的载入和读取机制 本次修改主要为了避免当多个用户同时进行修改密码或注册新账户等需要更新账户配置文件的操作时,程序可能会发生写入冲突的问题。新的账户配置更新机制中加入了线程同步,从而确保其写入和读取时的安全性。 以上即为本次更新的全部内容,欢迎各位用户下载并更新体验。如果您在使用过程中遇到问题或是希望提出建议,欢迎随时至信kohgyl...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案