QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:0010341
用户头像

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

关注

评论

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

趣文:那天我被拉入 C++ 亲友群

程序员生活志

c c++ 程序员

程序员陪娃系列——小娃的到来

孙苏勇

程序员 陪伴 随笔杂谈

构造、析构期间被调虚函数发生的惨案,长教训!

华为云开发者联盟

代码 组合模式 封装、继承、多态 bug 回调函数

品质网络的迭变之路,以及运营商的未来之匙

脑极体

一款基于 Python 语言的 Linux 资源监视器!

JackTian

Python GitHub Linux bashtop bpytop

Linkerd 2.8 - 實現超級簡單又安全的多叢集(multicluster) Kubernetes 架構

Rammus

Kubernetes DevOps 运维 云原生 Service Mesh

程序员陪娃系列——见你的第一面

孙苏勇

程序员 陪伴 随笔杂谈

云图说 | 3分钟创建一个游戏类工作负载

华为云开发者联盟

Docker 容器 华为云 工作负载 2048游戏

太赞了!程序员应该访问的最佳网站都在这里了!

JackTian

GitHub 学习 编程 程序员 网站平台

十多位全球技术专家,为你献上近十个小时的.Net微服务介绍

newbe36524

容器 微服务 .net core netcore

学了那么多技术,为何依然成不了架构师

菜根老谭

架构设计原则

程序员陪娃系列——小小免费按摩师

孙苏勇

程序员 陪伴 随笔杂谈

程序员陪娃系列——和孩子聊生死

孙苏勇

程序员 陪伴 随笔杂谈

程序员陪娃系列——育儿路上二三事

孙苏勇

程序员 陪伴 随笔杂谈

边云协同!EM-BOX视频分析盒加速安全生产场景落地AI应用

百度大脑

人工智能 人脸识别 图像识别 百度大脑 人体识别

学生党学编程,有这个开源项目就够了!

JackTian

GitHub 学习 编程 程序员 学生党

BIGO技术:实时计算平台建设

InfoQ_3597a20b53cc

互联网 BIGO

移卡荣登2020「AI 最佳成长榜」,AI+金融科技赋能商业服务

DT极客

一次好的聊天可以超过自己努力啃几周的书籍

良知犹存

程序人生

“云”上教与学,让教育不止步于课堂

Geek_116789

低代码平台会让程序员失业?测评了5个工具,谁能让效率提高N倍?

代码制造者

编程 编程语言 低代码 零代码 测评

计算机网络基础(十六)---传输层-可靠传输的基本原理

书旅

计算机网络 网络 协议族 网络层

Android 原生 SQLite 数据库的一次封装实践

vivo互联网技术

sqlite android 数据库

入职两周,怀疑自己进了假百度!跟传说中完全不一样!难道真有两家百度公司?

程序员生活志

百度 程序员

程序员陪娃系列——育儿路上二三事续

孙苏勇

程序员 陪伴 随笔杂谈

使用 supervisor 配置 ngrok 内网穿透为守护进程

jerry.mei

Linux 操作系统 ngrok 守护进程 内网穿透

《Java并发编程的艺术》读书笔记1:说说并发编程

Jason

多线程 并发

内存总是不够?HBase&GeoMesa配置优化了解一下

华为云开发者联盟

内存模型 内存 HBase 大集群 GeoMesa

数据库外键

will

数据库 性能 外键

【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研

华为云开发者联盟

反馈 API 华为云 API Explorer平台 用户调研

多角度分析,通讯时序数据的预测与异常检测挑战

华为云开发者联盟

时序数据库 即时通讯 异常检测 网络智能体 时序预测

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