写点什么

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

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

关注

评论

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

一篇文带你了解程序员的生存环境到底有多难!(1),Android端简单易用的SPI框架

android 程序员 移动开发

三年 Android 开发的技术人生,浅谈自身面试的感悟,华为架构师深入讲解Android开发

android 程序员 移动开发

三年备战阿里面试功亏一篑,失败是成功他妈,最终拼下美团Android开发

android 程序员 移动开发

三年磨一剑,这一次的金三银四打算离职的我准备好了,androidrom开发前景

android 程序员 移动开发

三面阿里被挂,内推历经5面终获offer,我总结出了这些Android常用面试题和常见问题

android 程序员 移动开发

一直认为Android不好找工作的同学,你的问题在这里!(1)

android 程序员 移动开发

一篇文章教你搞清楚——Kotlin-进阶---不变型,android开发框架mvp

android 程序员 移动开发

一篇文章教你读懂UI绘制流程我的Android重构之旅:框架篇

android 程序员 移动开发

不妨借一步说话,你想知道的关于设计模式的种种,移动智能终端的发展趋势

android 程序员 移动开发

一篇文章搞懂Android 自定义viewgroup的难点,又是一年金九银十

android 程序员 移动开发

一键调用,Get Android 实现视频连麦直播的核心原理,kotlin常用高阶函数

android 程序员 移动开发

三年开发经验,从小厂离职后,我凭什么拿到了阿里,作为一个Android开发者

android 程序员 移动开发

三年Android开发却只有一年工作经验,是怎么收到offer的?

android 程序员 移动开发

不学了,不学了,不学Android了,当上项目经理才知道

android 程序员 移动开发

一次奇葩面试经历,没去过BAT的Android研发就不配面试架构师?

android 程序员 移动开发

一篇不太一样的RxJava介绍,2021年Android开发者跳槽指南

android 程序员 移动开发

一篇文带你了解程序员的生存环境到底有多难!,android开发案例教程与项目实战

android 程序员 移动开发

一键登录了解一下?,揭秘

android 程序员 移动开发

一直认为Android不好找工作的同学,你的问题在这里!,移动软件开发

android 程序员 移动开发

一起来玩Weex,kotlin操作符重载

android 程序员 移动开发

三月唯一一篇凉经奉上(Android 岗),成功跳槽阿里

android 程序员 移动开发

三面字节跳动被虐得“体无完肤”,为什么spring能最好地改变Android

android 程序员 移动开发

一篇文章教你搞定内存泄漏与排查流程——安卓性能优化,20道高频面试题(含答案)

android 程序员 移动开发

一道腾讯面试官指点:组件之间的跳转和组件通信原理机制

android 程序员 移动开发

实用函数式 Java (PFJ)简介

码语者

Java

百万大数据 5 期 - BSM -02 课作业

Clarke

一次违反常规的大厂OPPO面试经历(文末有面试答案领取)

android 程序员 移动开发

一线大厂大型APP性能优化系列-自定义启动器(三),整理出Android逆向系列学习进阶视频

android 程序员 移动开发

三次失力美团Android 开发岗后,时隔一年终于成功拿下offer

android 程序员 移动开发

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