最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Elixir 1.3 带来新的语言功能、API 和改进后的工具

  • 2016-07-03
  • 本文字数:940 字

    阅读完需:约 3 分钟

José Valim 最近宣布 Elixir 1.3 中弃用了必要赋值,添加了一些新的类型和存取器,提升了其 Mix 搭建工具和 ExUnit 单元测试框架。

Elixir 1.3 弃用了对需要在外部作用域进行访问的变量的赋值,如果发现有这样的情况就会立刻发出警告。这个操作的根据是给在外部作用域中的变量进行赋值,从而给内部作用域中的值添加隐式返回值。例如下面的函数定义:

复制代码
def format(message, opts) do
path =
if (file = opts[:file]) && (line = opts[:line]) do
relative = Path.relative_to_cwd(file)
message = Exception.format_file_line(relative, line) <> " " <> message
relative
end
{path, message}
end

if 块语句,除了返回 path 的值还改变了 message 中的值,这个值后面从封闭的函数中由 path 返回。在 Elixir 1.3 中这被认为是错误的操作,需要重构成如下的代码,很明确地定义 if 块返回两个值后方可使用:

复制代码
def format(message, opts) do
path =
if (file = opts[:file]) && (line = opts[:line]) do
relative = Path.relative_to_cwd(file)
message = Exception.format_file_line(relative, line) <> " " <> message
{relative, message}
end
{path, message}
end

另外一个可以方便地遍历嵌套的数据结构的语言功能是存取选择器。以下的代码中向你展示了如何遍历一个与 language 值相关联的 map,并将 name 值中所有的元素都转换为大写:

复制代码
iex> update_in myMap, [:languages, Access.all(), :name], &String.upcase/1

Elixir 的搭建工具 Mix 现在可以进行对照检查,这个功能非常实用,比如说在检测对不存在的模块和函数的调用时,或是定位所有调用了属于某个模块的函数时,或是产生依赖关系图的时候。另外,Mix 简化了其输出,因此可以更方便地发现警告。Elixir 1.3 中 Mix 的另一大改进是可以更好地进行依赖跟踪,因此编译时间会进一步缩短。

Elixir 的单元测试框架 ExUnit 利用 Mix 的对照检查功能添加了一个新标志–stale,它可以保证从上次运行之后,只有修改过的单元测试才会被执行。ExUnit 还优化了断言输出并提升了对于使用命名块的测试。

Elixir 1.3 还进行了更多改变。你可以阅读发行说明中的完整列表。

查看英文原文 Elixir 1.3 Brings New Language Features, APIs, and Improved Tooling

2016-07-03 19:009558
用户头像

发布了 218 篇内容, 共 64.9 次阅读, 收获喜欢 75 次。

关注

评论

发布
暂无评论
发现更多内容

云小课|三大灵魂拷问GaussDB(DWS)数据落盘安全问题

华为云开发者联盟

安全 云小课 GaussDB(DWS) 数据仓库服务 数据落盘安全

拥有3000多万用户的录屏软件,到底强在哪儿?

淋雨

Camtasia

网易智企斩获“2021全球新经济卓越成就奖”两项大奖

网易云信

大数据 云通信 通信云

30K成功入职京东:拿到京东offer经验分享「面试经历+面试真题」

Java redis spring 程序员 JVM

Android技术分享| Android WebRTC 开启H264软件编解码教程

anyRTC开发者

android 音视频 WebRTC ffmpeg H264

WeTest六周年 | 匠心不改 初心不变

WeTest

IDEA免费激活至2099年教程,亲测可用

Tom弹架构

Java 工具 IDEA

03 K8S之网络互联通信

穿过生命散发芬芳

k8s 11月日更

我凭借这份pdf,最终拿到了阿里,腾讯,京东等八家大厂offer

Java 编程 程序员 面试

架构实战营 - 毕业总结

燕燕 yen yen

架构训练营

漏洞深入分析-2021

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

CANN5.0黑科技解密 | 别眨眼!缩小隧道,让你的AI模型“身轻如燕”!

华为云开发者联盟

AI CANN 昇腾 模型压缩 模型缩小隧道

架构实战营 毕业总结

一雄

架构实战营 毕业总结

不懂乐理和五线谱也能快速入门电子音乐制作!用FL Studio 搞音乐创作有时候就是这么简单!

懒得勤快

惊艳11月!日更挑战你准备好了么!?

InfoQ写作社区官方

11月日更 热门活动

CSS架构之Acss层(中)

Augus

CSS 11月日更

拥抱时序数据库,构筑IoT时代下智慧康养数据存储底座

华为云开发者联盟

数据 IoT 时序数据库 华为云 智慧康养

APP上跑小程序,一箭双雕

Speedoooo

ios开发 APP开发 Andriod开发

实现连续测试,要做的事情【译】

FunTester

敏捷 自动化 持续集成 FunTester 连续测试

架构实战营模块毕业总结

老猎人

架构实战营

【设计模式】第九篇 - 适配器模式 - 你多大鞋,我多大脚

Brave

设计模式 适配器模式 11月日更

OCR的工作原理和应用场景

澳鹏Appen

人工智能 机器学习 OCR 训练数据 文本识别

毕业设计项目 电商秒杀系统

面向对象的猫

netty系列之:搭建客户端使用http1.1的方式连接http2服务器

程序那些事

Java Netty 程序那些事 http2 11月日更

Linux 系统资源查看及硬件故障排查(qbit)

qbit

操作系统 故障 资源

毕业总结

面向对象的猫

毕业总结

如何在 Spring 中使用事件

码语者

Spring Boot Event 事件

这都是什么

冇先生

增量编译:让小程序包编译速度提升11倍!

Speedoooo

容器 ios开发 APP开发 Andriod开发

闻香识代码,什么是衡量代码质量的终极标准?

Zilliz

Java 代码质量 JavaScrip

拍乐云基于AV1的实时视频系统技术实践 | 2021 LiveVideoStackCon 演讲回顾

拍乐云Pano

音视频 WebRTC RTC

Elixir 1.3带来新的语言功能、API和改进后的工具_后端_Sergio De Simone_InfoQ精选文章